I am writing a code to ask for multiple run time permission on Android 6.0
. I have followed some good example codes, but ActivityCompat.shouldShowRequestPermissionRationale (context, READ_PHONE_STATE)
is causing an error that the first argument context is wrong.
How can I resolve this problem?
Thanks in advance.
Code is :
if (ContextCompat
.checkSelfPermission(SpalshActivity.this,
READ_PHONE_STATE)+ContextCompat.checkSelfPermission(context,
WRITE_EXTERNAL_STORAGE) +ContextCompat.checkSelfPermission(context,
CAMERA) + ContextCompat
.checkSelfPermission(context,
READ_CONTACTS)+ContextCompat
.checkSelfPermission(context,
CALL_PHONE)+ContextCompat
.checkSelfPermission(context,
ACCESS_FINE_LOCATION)+ContextCompat
.checkSelfPermission(context,
READ_SMS)== PackageManager.PERMISSION_GRANTED) {
myMethod();
}
else {
if (ActivityCompat.shouldShowRequestPermissionRationale
(context, READ_PHONE_STATE) ||ActivityCompat.shouldShowRequestPermissionRationale
(context, WRITE_EXTERNAL_STORAGE)||
ActivityCompat.shouldShowRequestPermissionRationale
(context, CAMERA) ||
ActivityCompat.shouldShowRequestPermissionRationale
(context, READ_CONTACTS) || ActivityCompat.shouldShowRequestPermissionRationale
(context, CALL_PHONE) || ActivityCompat.shouldShowRequestPermissionRationale
(context, ACCESS_FINE_LOCATION) || ActivityCompat.shouldShowRequestPermissionRationale
(context, READ_SMS)) {
Snackbar.make(findViewById(android.R.id.content),
"Please Grant Permissions",
Snackbar.LENGTH_INDEFINITE).setAction("ENABLE",
new View.OnClickListener() {
@Override
public void onClick(View v) {
ActivityCompat.requestPermissions(SpalshActivity.this,
new String[]{READ_PHONE_STATE,WRITE_EXTERNAL_STORAGE,CAMERA, READ_CONTACTS, CALL_PHONE, ACCESS_FINE_LOCATION, READ_SMS},
REQUEST_READ_PHONE_STATE);
}
}).show();
} else {
ActivityCompat.requestPermissions(SpalshActivity.this,
new String[]{READ_PHONE_STATE,WRITE_EXTERNAL_STORAGE,CAMERA, READ_CONTACTS, CALL_PHONE, ACCESS_FINE_LOCATION, READ_SMS},
REQUEST_READ_PHONE_STATE);
}
}
}
}
You can ask multiple permissions (from different groups) in a single request. For that, you need to add all the permissions to the string array that you supply as the first parameter to the requestPermissions API like this: requestPermissions(new String[]{ Manifest. permission.
Requesting Android Runtime Permissions The method requestPermissions(String[] permissions, int requestCode); is a public method that is used to request dangerous permissions. We can ask for multiple dangerous permissions by passing a string array of permissions.
In case one or more permissions are not granted, ActivityCompat. requestPermissions() will request permissions and the control goes to onRequestPermissionsResult() callback method. You should check the value of shouldShowRequestPermissionRationale() flag in onRequestPermissionsResult() callback method.
First parameter is android.app.Activity
type, You can't pass context
at this place so use this
instead of context
like below code :-
if (ActivityCompat.shouldShowRequestPermissionRationale
(this, READ_PHONE_STATE) ||ActivityCompat.shouldShowRequestPermissionRationale
(this, WRITE_EXTERNAL_STORAGE)||
ActivityCompat.shouldShowRequestPermissionRationale
(this, CAMERA) ||
ActivityCompat.shouldShowRequestPermissionRationale
(this, READ_CONTACTS) || ActivityCompat.shouldShowRequestPermissionRationale
(this, CALL_PHONE) || ActivityCompat.shouldShowRequestPermissionRationale
(this, ACCESS_FINE_LOCATION) || ActivityCompat.shouldShowRequestPermissionRationale
(this, READ_SMS))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With