Android Request Run Time Permission Not Working
I was having some problem when trying to request run time permission on Android emulator. What I am trying to do is upon button clicked, request for read and write to external stor
Solution 1:
This is because ActivityCompat.requestPermissions
is not a synchronous call. OS will show the popup (which is actually an Activity) and the statements following it will be executed.
Since both permissions are mandatory for your request them at same time.
if (!checkPermission(readPermission) || !checkPermission(writePermission)) {
requestPermission(newString[] {readPermission,writePermission});
} else{
//Run Async task directly since the permissions are already granted
}
privatevoidrequestPermission(String[] permissions){
if (ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[0])||ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[1])){
Toast.makeText(getApplicationContext(), "Read/Write external storage permission allows us to read/write data. Please allow in App Settings for additional functionality.",Toast.LENGTH_LONG).show();
}
ActivityCompat.requestPermissions(this, permissions,PERMISSION_REQUEST_CODE);
}
ActivityCompat.requestPermissions(this, permissions, requestCode);
Move the AsyncTask
execution to onRequestPermissionsResult
as follows:
@OverridepublicvoidonRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_CODE:
if (verifyGrantResults(grantResults)) {
Toast.makeText(getApplicationContext(), "Permission Granted. Now you can read/write data.",
Toast.LENGTH_LONG).show();
//start Async Task here
} else {
Toast.makeText(getApplicationContext(),"Permission Denied. You cannot read/write data.",
Toast.LENGTH_LONG).show();
}
break;
}
}
privatebooleanverifyGrantResults(finalint[] grantResults) {
booleanpermissionsGranted=true;
if (grantResults.length > 0) {
for (int result : grantResults) {
if (result == PackageManager.PERMISSION_DENIED) {
permissionsGranted = false;
}
}
return permissionsGranted;
}
returnfalse;
}
Post a Comment for "Android Request Run Time Permission Not Working"