Wie kann ich den Berechtigungsdialog in Android anpassen?

Angenommen, ich verlange eine Erlaubnis zur Laufzeit wie die folgenden:

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

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

  • Weder Benutzer noch aktueller Prozess hat android.permission.ACCESS_COARSE_LOCATION
  • Erforderliche Berechtigung nur für ältere Android-Versionen: maxSdkVersion funktioniert nicht?
  • Aufruf erfordert API Level 23 (aktuell min ist 14): android.app.Activity # requestPermissions, checkSelfPermission
  • Kann nicht eingehenden Anruf in android Marshmallow 6.0 beantworten
  • Lese- und Schreibberechtigung für Speicher- und Galeriegebrauch für Marshmallow
  • Wie kann ich Android 6.0-Berechtigungen debuggen?
  • Benötigt die V2 Maps Library die Berechtigung ACCESS_NETWORK_STATE?
  • Android M: Programmierbar widerrufen Berechtigungen
  • 4 Solutions collect form web for “Wie kann ich den Berechtigungsdialog in Android anpassen?”

    Die kurze Antwort ist, können Sie nicht .

    Wie die Android-Dokumentation ausführt:

    Wenn Ihre App requestPermissions () aufruft, zeigt das System dem Benutzer ein Standarddialogfeld an. Ihre App kann dieses Dialogfeld nicht konfigurieren oder ändern. Wenn Sie dem Benutzer irgendwelche Informationen oder Erklärungen mitteilen müssen, sollten Sie dies tun, bevor Sie requestPermissions () anrufen, wie unter "Explain why the app needs permissions" beschrieben.

    So gibt es keine Möglichkeit, ein benutzerdefiniertes Layout für den Berechtigungsdialog für jetzt zu definieren.

    Hier finden Sie ausführlichere Informationen: http://developer.android.com/training/permissions/requesting.html

    Ich habe einen benutzerdefinierten Dialog für die Erlaubnis:

     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 wird dir helfen 🙂

    Android 6.0 Marshmallow. Kann nicht auf SD-Karte schreiben Dieser Post half mir aus dem Dialog zu zeigen, um zu schreiben, um externe Berechtigung zu schreiben

    Sie können einen Dialog hinzufügen, wenn der Benutzer anfänglich die Berechtigung verweigert, dann fragen Sie nach der Erlaubnis

     public void checkPermission() { if (checkSelfPermission(getActivity(), Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { // Should we show an explanation? if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)) { // Show an explanation to the user *asynchronously* -- don't block // this thread waiting for the user's response! After the user // sees the explanation, try again to request the permission. LogUtils.log(TAG, "NO PERMISSION SHOW MESSAGE"); } else { // No explanation needed, we can request the permission. The result will be captured in onRequestPermissionsResult requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_READ_EXTERNAL_STORAGE); LogUtils.log(TAG, "NO PERMISSION REQUEST PERMISSION"); } } } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { switch (requestCode) { case REQUEST_READ_EXTERNAL_STORAGE: { // If request is cancelled, the result arrays are empty. if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { // permission was granted, yay! Do the // contacts-related task you need to do. LogUtils.log(TAG, "REQUEST PERMISSION GRANTED :)"); getResultFromCursor(); } else { // permission denied, boo! Disable the // functionality that depends on this permission. shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE); showMessageOKCancel("You need to add this Permission to see your Photos", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { LogUtils.log(TAG, "OK PRESSED"); requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_READ_EXTERNAL_STORAGE); } }); LogUtils.log(TAG, "REQUEST PERMISSION DENIED :( "); } return; } // other 'case' lines to check for other // permissions this app might request } } private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) { new AlertDialog.Builder(getContext()) .setMessage(message) .setPositiveButton("OK", okListener) .setNegativeButton("Cancel", null) .create() .show(); } 

    Vergessen Sie nicht zu ändern: –

     ActivityCompat.requestPermissions when in AppCompatActivity 

    Zu gerade

     requestPermissions when in android.support.v4.app.Fragment, 

    Da der Rückruf (onRequestPermissionsResult) nicht funktioniert

    Android M Berechtigungen: onRequestPermissionsResult () wird nicht aufgerufen

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.