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?
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
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 :)
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