Ich arbeite an der Überprüfung und Erlangung der Erlaubnis von Benutzer mit API-Ebene 23 und höher. Also hier eine verwirrende Sache für mich ist, android.com sagt:shouldShowRequestPermissionRationale funktioniert nicht wie erwartet
shouldShowRequestPermissionRationale() Methode gibt true zurück, wenn die App diese Berechtigung angefordert hat vorher und der Benutzer verweigert die Anfrage. Wenn der Benutzer die Berechtigungsanfrage in der Vergangenheit abgelehnt und entschied sich für die nicht wieder Option in der Berechtigungsanfrage Systemdialog fragen Sie, gibt diese Methode false
in anderen Seite ist es die Erlaubnis zur Überprüfung folgende Code gibt und Anfrage Erlaubnis, wenn seine bereits Local
// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// Should we show an explanation?
if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
Manifest.permission.READ_CONTACTS)) {
// 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.
} else {
// No explanation needed, we can request the permission.
ActivityCompat.requestPermissions(thisActivity,
new String[]{Manifest.permission.READ_CONTACTS},
MY_PERMISSIONS_REQUEST_READ_CONTACTS);
// MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
// app-defined int constant. The callback method gets the
// result of the request.
}
}
else
Umfang in obigem Beispiel wird ausgeführt, wenn Benutzer die Berechtigung nicht zulässt und überprüfen Sie noch einmal fragen nicht, nicht wahr? Also mit diesem Code Benutzer nie um Erlaubnis gefragt, beim ersten Mal ausgeführt werden. Ich habe diesen Code getestet und das Ergebnis ist, was ich erwartet habe. So, wie könnte ich die Erlaubnis zum ersten Mal ausführen und etwas tun, wenn Benutzer meine Anfrage abgelehnt und etwas tun, wenn Benutzer meine Anfrage ablehnen und überprüfen Fragen Sie nicht erneut?
_ „Also mit diesem Code Benutzer nie die Erlaubnis zum ersten Mal laufen gefragt zu werden“ _ 'shouldShowRequestPermissionRationale' soll zurückkehren' falsch behandelt 'Wenn Ihre App den Benutzer noch nicht nach der Berechtigung gefragt hat, wird die 'else' -Klausel beim ersten Durchlauf ausgeführt. – Michael
Mögliches Duplikat von [Android M Permissions: Konfus über die Verwendung der Funktion sollteShowRequestPermissionRationale()] (https://stackoverflow.com/questions/32347532/android-m-permissions-confused-on-the-usage-of-shouldshowrequestpermissiontrati) –
@Michael aber android.com denkt anders: Wenn der Benutzer die Berechtigungsanfrage in der Vergangenheit abgelehnt hat und die Option Nicht erneut fragen im Berechtigungsanfrage-Systemdialog gewählt hat, gibt diese Methode false zurück. –