Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Provide custom text for Android M permission dialog

Is it possible to provide a custom text for the system dialog which is displayed when the user is asked to grant permission?

like image 435
rfsk2010 Avatar asked Oct 05 '15 07:10

rfsk2010


People also ask

How do I set custom permissions in Android dialog?

requestPermissions(thisActivity, new String[]{Manifest. permission. READ_CONTACTS}, MY_PERMISSIONS_REQUEST_READ_CONTACTS); Android system creates a popup dialog to request permission.

How do I set custom permissions on Android?

You can use the sharedUserId attribute in the AndroidManifest. xml 's manifest tag of each package to have them assigned the same user ID. By doing this, for purposes of security the two packages are then treated as being the same app, with the same user ID and file permissions.

How do I request SMS permission on Android?

In some versions of Android, this permission is turned on by default. In other versions, this permission is turned off by default. To set the app's permission on a device or emulator instance, choose Settings > Apps > SMS Messaging > Permissions, and turn on the SMS permission for the app.

How do I set permissions in Android programmatically?

You need to declare the permissions in the manifest file first before you request for them programmatically. refer this for more information. declaring the permission in the manifest file is static type declaration by which your os know what kind of permission your app might require.


2 Answers

No, you can't customize the text of the dialog, but you can provide an explanation before request the permission. Quoting from developer.android.com:

Request Permissions

If your app needs a dangerous permission that was listed in the app manifest, it must ask the user to grant the permission. Android provides several methods you can use to request a permission. Calling these methods brings up a standard Android dialog, which you cannot customize.

Explain why the app needs permissions

In some circumstances, you might want to help the user understand why your app needs a permission. For example, if a user launches a photography app, the user probably won't be surprised that the app asks for permission to use the camera, but the user might not understand why the app wants access to the user's location or contacts. Before you request a permission, you should consider providing an explanation to the user. Keep in mind that you don't want to overwhelm the user with explanations; if you provide too many explanations, the user might find the app frustrating and remove it.

One approach you might use is to provide an explanation only if the user has already turned down that permission request. If a user keeps trying to use functionality that requires a permission, but keeps turning down the permission request, that probably shows that the user doesn't understand why the app needs the permission to provide that functionality. In a situation like that, it's probably a good idea to show an explanation.

To help find situations where the user might need an explanation, Android provides a utiltity method, shouldShowRequestPermissionRationale(). This method returns true if the app has requested this permission previously and the user denied the request.

like image 52
Mattia Maestrini Avatar answered Oct 14 '22 00:10

Mattia Maestrini


We cannot customize request permission dialog but we can provide user a custom explanation that why we are requesting below is the method with custom explanation

   private void checkForCameraPermission() {     // Here, thisActivity is the current activity     if (ContextCompat.checkSelfPermission(this,             Manifest.permission.CAMERA)             != PackageManager.PERMISSION_GRANTED) {         if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA)) {             AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this);             alertBuilder.setCancelable(true);             alertBuilder.setTitle("Camera permission necessary");             alertBuilder.setMessage("FITsociety need camera permission to read barcode.");             alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {                 @Override                 public void onClick(DialogInterface dialog, int which) {                     ActivityCompat.requestPermissions(BarCodeScannerActivity.this,                             new String[]{Manifest.permission.CAMERA},                             MY_PERMISSIONS_REQUEST_CAMERA);                 }             });              AlertDialog alert = alertBuilder.create();             alert.show();         } else {             // No explanation needed, we can request the permission.             ActivityCompat.requestPermissions(this,                     new String[]{Manifest.permission.CAMERA},                     MY_PERMISSIONS_REQUEST_CAMERA);             // MY_PERMISSIONS_REQUEST_CAMERA is an             // app-defined int constant. The callback method gets the             // result of the request.         }     } else {         setBarCodeScannerView();     } } 

the above method check whether permission is already granted if not then it check if custom explanation is required with this method

ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.CAMERA) 

the documentation for this method is here shouldShowRequestPermissionRationale() this method return true only if user deny to permission dialog or user close the permission from the setting of the application if user did so then show alert dialog with custom explanation and proceed further hope it works

like image 21
rana_sadam Avatar answered Oct 13 '22 23:10

rana_sadam