@@ -40,6 +40,7 @@ This program (the AndroidFilePickerLight library) is free software written by
4040import java .util .Arrays ;
4141import java .util .List ;
4242import java .util .Locale ;
43+ import java .util .jar .Manifest ;
4344
4445import pub .devrel .easypermissions .AfterPermissionGranted ;
4546import pub .devrel .easypermissions .AppSettingsDialog ;
@@ -66,10 +67,14 @@ public class FileChooserActivity extends AppCompatActivity implements EasyPermis
6667 private PrefetchFilesUpdater prefetchFilesUpdaterInst ;
6768
6869 public static final String [] ACTIVITY_REQUIRED_PERMISSIONS = {
69- "android.permission.READ_EXTERNAL_STORAGE" ,
70- "android.permission.WRITE_EXTERNAL_STORAGE" ,
71- "android.permission.ACCESS_MEDIA_LOCATION" ,
72- "android.permission.INTERNET"
70+ //"android.permission.READ_EXTERNAL_STORAGE",
71+ Manifest .permission .READ_EXTERNAL_STORAGE ,
72+ //"android.permission.WRITE_EXTERNAL_STORAGE",
73+ Manifest .permission .WRITE_EXTERNAL_STORAGE ,
74+ //"android.permission.ACCESS_MEDIA_LOCATION",
75+ Manifest .permission .ACCESS_MEDIA_LOCATION ,
76+ //"android.permission.INTERNET"
77+ Manifest .permission .INTERNET
7378 };
7479
7580 public static final String [] ACTIVITY_OPTIONAL_PERMISSIONS = {
@@ -141,15 +146,15 @@ private void checkRequiredPermissionsForActivityLaunch(long closeActivityDelayTi
141146 if (android .os .Build .VERSION .SDK_INT >= Build .VERSION_CODES .M ) {
142147 for (String permission : requiredPermsList ) {
143148 if (ActivityCompat .checkSelfPermission (this , permission ) != PackageManager .PERMISSION_GRANTED ) {
144- Log .w (LOGTAG , String .format (Locale .getDefault (), "No permission for %s" , permission ));
149+ Log .w (LOGTAG , String .format (Locale .getDefault (), R . string . activityPermErrorMsgFormat , permission ));
145150 checkPermsStatusOK = false ;
146151 missingPermission = permission ;
147152 break ;
148153 }
149154 }
150155 }
151156 if (!checkPermsStatusOK ) {
152- String activityReturnErrorMsg = String .format (Locale .getDefault (), "File chooser activity aborted: Unable to obtain required permission: %s" , missingPermission );
157+ String activityReturnErrorMsg = String .format (Locale .getDefault (), R . string . activityPermErrorMsgFormat , missingPermission );
153158 final FileChooserException .AndroidFilePickerLightException closeActivityRTEFinal = new FileChooserException .AndroidFilePickerLightException (activityReturnErrorMsg );
154159 Handler closeActivityDelayTimeoutHandler = new Handler ();
155160 Runnable closeActivityDelayTimeoutRunner = new Runnable () {
@@ -167,14 +172,41 @@ public void run() {
167172
168173 }
169174
175+ private static ActivityResultCallback activityResCb ;
176+ private static ActivityResultLauncher activityResCbLauncher ;
177+
178+ @ Override
179+ public void onRequestPermissionsResult (int requestCode ,
180+ @ NonNull String [] permissions ,
181+ @ NonNull int [] grantResults ) {
182+
183+ super .onRequestPermissionsResult (requestCode , permissions , grantResults );
184+
185+ // TODO: If all permissions are obtained, launch the file
186+ // chooser activity before the default 5-sec timeout.
187+ if (requestCode == PermissionsHandler .REQUEST_CODE_ASK_PERMISSIONS ) {
188+ if (grantResults .length > 0 && grantResults [0 ] == PackageManager .PERMISSION_GRANTED ) {
189+ // Permission was granted, proceed with the functionality
190+ } else {
191+ // Permission was denied, gracefully degrade the app's functionality
192+ }
193+ }
194+ }
170195 @ Override
171196 public void onCreate (Bundle lastSettingsBundle ) {
172197
173198 super .onCreate (lastSettingsBundle );
174199
175200 RuntimeException closeActivityRTE = null ;
201+ activityResCb = new ActivityResultCallback (this );
202+ activityResCbLauncher = registerForActivityResult (activityResCb );
176203 boolean checkPermsStatus = true ;
177204 try {
205+ for (whichPerm : ACTIVITY_REQUIRED_PERMISSIONS ) {
206+ if (!PermissionsHandler .obtainLocalPermission (this , whichPerm )) {
207+ activityResCbLauncher .launch (whichPerm );
208+ }
209+ }
178210 PermissionsHandler .obtainRequiredPermissions (this , ACTIVITY_REQUIRED_PERMISSIONS );
179211 PermissionsHandler .requestOptionalPermissions (this , ACTIVITY_OPTIONAL_PERMISSIONS );
180212 } catch (Throwable permsEx ) {}
0 commit comments