Wie bewerben Sie sich erfolgreich Berechtigungen für die Laufzeit im Android?
Möchte ich Euch bitten, für jede Berechtigung, die der Benutzer nach der Installation der app.
Ist es möglich, Berechtigungen für die Laufzeit von der aktuellen API(7.0) - API level 19 (4.4)?
Ich habe die Dokumentation gelesen und ich habe versucht, eine Menge Beispiele.
Alles scheint zu Komplex und ich habe sogar gesehen, plugins, um die Berechtigungen anzufordern.
Bietet die Dokumentation ein Beispiel usign mehrere NuGet-Pakete:
https://developer.xamarin.com/samples/monodroid/android-m/RuntimePermissions/
Aber es funktioniert nur mit Android M (6.0 API level 23) und vor...
Dieser Artikel spricht darüber:
https://blog.xamarin.com/requesting-runtime-permissions-in-android-marshmallow/
Zum Beispiel, in meinem Fall möchte ich prüfen, ob die app die "Berechtigung " KAMERA" und wenn Sie nicht Fragen, für den Benutzer, so etwas wie dieses:
if (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(this, Manifest.Permission.Camera) != (int)Permission.Granted) {
//Permission has never been accepted
//So, I ask the user for permission
ActivityCompat.RequestPermissions(this, new String[] { Manifest.Permission.Camera }, REQUEST_CAMERA);
} else {
//Permission has already been accepted previously
}
Öffnet sich die Anwendung, ohne dass etwas angezeigt wird.
Der check funktioniert, aber "RequestPermissions" nicht Fragen, nichts an den Benutzer.
- Warum nicht alles zeigen?
- Warum ich "ActivityCompat", wenn auch nicht in Versionen vor M?
Kann mir jemand ein Beispiel zur Anforderung der Laufzeit die Berechtigung, von einem einfachen code (kompatibel mit Versionen vor M)?
ContextCompat.CheckSelfPermission()
wird immer true zurück. Leider, es wird auch true zurückgegeben, wenn targetSDK < M und ein Gerät mit M oder höher, auch wenn der Benutzer Widerruf der Erlaubnis. (dies gilt für native android-dev, bitte testen Sie, um sicherzustellen, dass es gültig für xamarin als gut. In native dev können Sie PermissionChecker.checkSelfPermission()
in diesem Fall)Ich würde vorschlagen, Sie schauen sich diese Antwort stackoverflow.com/questions/40116612/... und stackoverflow.com/questions/36027167/...
InformationsquelleAutor ephramd | 2016-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bekam ich das gleiche Ergebnis wie du, also ich habe ein bisschen recherchiert. Der trick ist, dass Sie haben, um Berechtigungen in 2 Orten.
1. Im manifest
2. Anfordern von Berechtigungen im Lauf der Zeit
Wie hier gezeigt https://developer.android.com/training/permissions/requesting.html
das Ergebnis ist unterschiedlich.
mit allen Versionen von Android, muss die app erklären die normale und die gefährlichen Berechtigungen es braucht, die im app-manifest, wie in der Deklaration von Berechtigungen. Allerdings ist die Wirkung dieser Erklärung ist unterschiedlich, je nach system, version und app-target-SDK-Ebene:
Wenn das Gerät mit Android 5.1 oder niedriger, oder die app-target SDK ist 22 oder niedriger: Wenn Sie der Liste eine gefährliche permission in dem manifest der Nutzer hat bei der Erteilung der Erlaubnis, wenn Sie die app installieren; wenn Sie nicht erteilen Sie die Erlaubnis, das system nicht installieren, die app überhaupt.
Wenn das Gerät mit Android 6.0 oder höher, und Ihre app ' s target SDK ist 23 oder höher: Die app verfügt über eine Liste der Berechtigungen in der manifest-und es muss der Wunsch jedes gefährlichen Berechtigung, die es braucht, während die app läuft. Kann der Benutzer die grant-oder deny-Berechtigung, und die app kann weiterhin ausgeführt werden, mit begrenzten Fähigkeiten auch lehnt der Benutzer eine Berechtigung beantragen.
InformationsquelleAutor Yuri S
Berechtigungen für die Laufzeit eingeführt wurden und in Android 6.0 (API-23 - Marshmallow). Als solcher werden Sie nicht in der Lage sein, um programmgesteuert einrichten der Berechtigungen für die Laufzeit auf jedem Android-API niedriger als 23. Die Anfordern von Berechtigungen für die Laufzeit im Android-Marshmallow guide Sie verknüpft Ihre Frage ist wahrscheinlich die beste Ressource, und die
Check the SDK Version
Abschnitt zeigt die Logik, die zur überprüfung der API-Ebene und verhindert, dass die Berechtigungen für die Laufzeit der workflows aus aufgerufen wird, auf API-Ebene vor 23.Für frühere API-Level von 22 und vor müssen Sie Ihre Installation Berechtigungen in Ihrer
AndroidManifest.xml
wie beschrieben in der Fügen Sie Berechtigungen auf Android-Manifest guide.InformationsquelleAutor Alan Clark