wake-up-neo.com

Wie kann ich den Berechtigungsdialog in Android anpassen?

Angenommen, ich fordere zur Laufzeit eine Berechtigung wie die folgende an:

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

Das Android-System erstellt ein Popup-Dialogfeld, um die Berechtigung anzufordern. Wie kann ich ein benutzerdefiniertes Layout für diesen Dialog definieren?

24
nullpointer

Die kurze Antwort lautet: kann nicht.

Wie Android-Dokumentation schreibt:

Wenn Ihre App requestPermissions () aufruft, zeigt das System dem Benutzer ein Standarddialogfeld an. Ihre App kann nicht dieses Dialogfeld konfigurieren oder ändern. Wenn Sie dem Benutzer Informationen oder Erklärungen zur Verfügung stellen müssen, sollten Sie dies tun, bevor Sie requestPermissions () aufrufen, wie in "Erklären, warum die App Berechtigungen benötigt" beschrieben.

Es ist daher nicht möglich, für den Berechtigungsdialog vorerst ein benutzerdefiniertes Layout zu definieren.

Ausführlichere Informationen finden Sie hier: http://developer.Android.com/training/permissions/requesting.html

42
yrazlik

Ich habe ein benutzerdefiniertes Dialogfeld für die Erlaubnis erstellt:

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

Hoffe das hilft dir :)

13
Anand Savjani

Android 6.0 Eibisch. Kann nicht auf SD-Karte schreiben Dieser Beitrag hat mir geholfen, Dialoge zu zeigen, um Schreibberechtigungen an externe Benutzer zu vergeben

0
Bharath