Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Allow Multiple Run Time Permission

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);
                }
            }
            }

    }
like image 892
vinayak singh Avatar asked Apr 26 '17 06:04

vinayak singh


People also ask

How do I get multiple runtime permissions on Android?

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.

What is run time permission in Android?

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.

How check multiple permissions granted or not Android?

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.


1 Answers

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))
like image 109
Vinod Kumar Avatar answered Sep 20 '22 13:09

Vinod Kumar