2015-10-05 4 views

Antwort

19

Nein, Sie können den Text des Dialogfelds nicht anpassen, Sie können jedoch eine Erklärung bereitstellen, bevor Sie die Berechtigung anfordern. Zitiert aus developer.android.com:

Anfrage Berechtigungen

Wenn Ihre App eine gefährliche Erlaubnis benötigt, die in der App Manifest aufgeführt wurde, muss er den Benutzer auffordern, die Erlaubnis zu erteilen. Android bietet mehrere Methoden, die Sie verwenden können, um eine Berechtigung anzufordern. Rufen Sie diese Methoden auf, öffnet sich ein Standard-Android-Dialog, den Sie nicht anpassen können.

Erklären Sie, warum die App-Berechtigungen benötigt

Unter bestimmten Umständen möchten Sie vielleicht der Benutzer helfen, zu verstehen, warum Ihre Anwendung eine Erlaubnis benötigt. Zum Beispiel, wenn ein Benutzer startet eine Fotografie App, wird der Benutzer wahrscheinlich nicht überrascht sein, dass die App fragt nach Erlaubnis, die Kamera zu verwenden, aber der Benutzer nicht verstehen, warum die App Zugriff auf den Standort des Benutzers oder will Kontakte. Bevor Sie eine Berechtigung anfordern, sollten Sie den Benutzer unter über eine Erklärung informieren. Denken Sie daran, dass Sie nicht möchten den Benutzer mit Erklärungen überwältigen; Wenn Sie zu viele Erklärungen zur Verfügung stellen, könnte der Benutzer die App frustrierend finden und sie entfernen.

Ein Ansatz, den Sie verwenden könnten, ist eine Erklärung nur dann, wenn der Benutzer diese Erlaubnisanforderung bereits abgelehnt hat. Wenn ein Benutzer versucht, Funktionen zu verwenden, die eine Berechtigung erfordern, aber die Berechtigungsanforderung heruntersetzt, zeigt dies wahrscheinlich, dass der Benutzer nicht versteht, warum die App die Berechtigung zum Bereitstellen der -Funktionalität benötigt. In einer solchen Situation ist es wahrscheinlich eine gute Idee, eine Erläuterung zu zu zeigen.

helfen Situationen zu finden, wo der Benutzer eine Erklärung benötigen, bietet Android eine utiltity Methode, shouldShowRequestPermissionRationale(). Diese Methode gibt true zurück, wenn die App diese Berechtigung zuvor angefordert hat und der Benutzer die Anfrage abgelehnt hat.

9

Wir können nicht um Erlaubnis bitten Dialog anpassen, aber wir können Benutzer eine benutzerdefinierte Erklärung liefern, warum wir unten fordern ist die Methode, mit benutzerdefinierten Erklärung

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

das obige Verfahren prüfen, ob die Erlaubnis bereits, wenn nicht gewährt wird, es dann prüfen, ob benutzerdefinierte Erklärung mit dieser Methode

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

die Dokumentation für diese Methode hier shouldShowRequestPermissionRationale() ist nur diese Methode Rückkehr erforderlich ist wahr Wenn der Benutzer den Berechtigungsdialog ablehnt oder der Benutzer die Berechtigung aus der Einstellung der Anwendung schließt, wenn der Benutzer dies getan hat, dann wird der Warndialog mit der benutzerdefinierten Erklärung angezeigt und es wird weiter gehofft, dass es funktioniert