web-dev-qa-db-fra.com

Comment personnaliser le dialogue de permission dans Android?

Supposons que je demande une autorisation au moment de l'exécution, comme suit:

ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.READ_CONTACTS},
            MY_PERMISSIONS_REQUEST_READ_CONTACTS);

Le système Android crée une boîte de dialogue contextuelle pour demander une autorisation. Comment définir une mise en page personnalisée pour cette boîte de dialogue?

24
nullpointer

La réponse courte est: vous ne pouvez pas.

Comme le dit la documentation Android:

Lorsque votre application appelle requestPermissions (), le système affiche une boîte de dialogue standard à l'intention de l'utilisateur. Votre application ne peut pas configurer ou modifier cette boîte de dialogue. Si vous devez fournir des informations ou des explications à l'utilisateur, vous devez le faire avant d'appeler requestPermissions (), comme indiqué dans "Expliquez pourquoi l'application a besoin d'autorisations".

Il n’ya donc aucun moyen de définir une disposition personnalisée pour la boîte de dialogue des autorisations pour le moment.

Vous trouverez des informations plus détaillées ici: http://developer.Android.com/training/permissions/requesting.html

42
yrazlik

J'ai créer un dialogue personnalisé pour la permission:

if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
   if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, Manifest.permission.READ_EXTERNAL_STORAGE)) {
       AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
       alertBuilder.setCancelable(true);
       alertBuilder.setTitle("Permission necessary");
       alertBuilder.setMessage("External storage permission is necessary");
       alertBuilder.setPositiveButton(Android.R.string.yes, new DialogInterface.OnClickListener() {

       @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
       public void onClick(DialogInterface dialog, int which) {
           ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);}});

       AlertDialog alert = alertBuilder.create();
       alert.show();
   } else { 
          ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);}
    return false;} 
 else { 
     return true;
}

J'espère que ceci vous aidera :)

13
Anand Savjani

Android 6.0 Marshmallow. Impossible d'écrire sur la carte SD cet article m'a aidé à sortir du dialogue pour accorder l'écriture à une autorisation externe

0
Bharath