2015-06-08 11 views
19

Die Android M Preview docs zeigt uns, wie Berechtigungen mit dem neuen Berechtigungsmodell überprüft und angefordert werden. In der folgenden Tabelle wird eine Gruppe von Berechtigungsgruppen und die zugehörigen Berechtigungen angezeigt.Android M fordert Berechtigungen mit Berechtigungsgruppen an

Als ich zu checkSelfPermission mit einem permission_group (dh Manifest.permission_group.CAMERA) beim ersten Start versuchen, vorhersagbar bekomme ich PackageManager.PERMISSION_DENIED.

Dann versuchen Sie requestPermissions für die gleiche permission_group und ich bekomme keine Art von Dialog zu Pop-up. 'onRequestPermissionsResult' kehrt sofort mit -1 zurück.

Wenn ich die gleiche Sequenz mit Manifest.permission.Camera versuche - Dinge scheinen wie normal zu funktionieren. Aber für eine einfache App, die ich mache, muss ich Video mit Audio aufzeichnen, und die beiden separaten Berechtigungen, CAMERA und MICROPHONE (aka RECORD_AUDIO) fordert, scheint wie schlechtes Design.

Die Frage: Ist checkSelfPermission und requestPermission mit Manifest.permission.* und Manifest.permission_group.* funktionieren soll, aber es ist ein Fehler, dass ich da es zeigen nicht Antrag stellen sollte? Oder war das Absichtsdesign?

* Hinweis - Ich verstehe, dass ich ein requestPermissions(String[], int) String-Array mit mehreren Berechtigungen in es selbst erstellen kann, aber ID noch viel if Anweisungen zu überprüfen, die Kombinationen von Berechtigungen, die ich brauche und sie als Gruppe anfordern, wenn ich sollte brauchen nur einen permission_group

Antwort

24

anfordern Wenn ich mit einem permission_group (dh Manifest.permission_group.CAMERA) beim ersten Start versuchen, checkSelfPermission vorhersagbar ich PackageManager.PERMISSION_DENIED bekommen.

Das ist, weil checkSelfPermission() Berechtigungen überprüft, nicht Berechtigungsgruppen.

Dann versuchen, RequestsPermissions für die gleiche permission_group und ich bekomme keine Art von Dialog zu Pop-up. 'onRequestPermissionsResult' gibt sofort mit -1 zurück.

Das ist, weil requestPermissions() mit Berechtigungen funktioniert, nicht Berechtigungsgruppen.

Ist checkSelfPermission und requestPermission soll mit Manifest.permission arbeiten. *

Ja.

und Manifest.permission_group. *

Nr

Oder war das vorsätzliche Design?

Vermutlich ja.Zumindest auf der checkSelfPermission(), Ebenen über anderen bereits vorhandenen Methoden, die zurück auf API Level 1 und arbeiten auf Berechtigungen, nicht Berechtigungsgruppen.

, wenn ich nur brauchen sollte ein permission_group

Sie machen Annahmen über die Zukunft von Android zu verlangen, die nicht korrekt. Gerade jetzt, Pre-M, sind Berechtigungsgruppen nicht besonders wichtig und Berechtigungen sind wichtig. In M gewinnen Berechtigungsgruppen an Bedeutung, da M in seiner Präsentation den Endbenutzern anzeigt, was der Benutzer steuern kann. Allerdings bieten Android-Versionen danach eine feinere Granularität, sei es für einzelne Benutzer oder für Unternehmen über Richtlinien, und das würde wahrscheinlich auf Berechtigungen zurückgehen.

Die API schlägt vor, dass Google die Tür für diese Art von Bewegungen offen lässt. In der Tat ist die Berechtigungsgruppe eine UX-Entscheidung, mehr als eine technische Entscheidung.

+0

war nicht bewusst über die checkSelf-Schichtung über die älteren API-Methoden, das ist gut zu wissen. Ich könnte einfach versuchen, ein Hilfsprogramm zu machen, das Menschen erlaubt, in permission_groups zu übergeben und zu sehen, ob es für mich Sinn macht, und möglicherweise andere :) danke für die Antwort cw – trippedout

+0

aber dann, was ist die bekannte Verwendung von 'Manifest.permission_group. Klasse? –

+0

@HendraAnggrian: Zum Beispiel könnten Sie es mit ['getPermissionGroupInfo()' auf 'PackageManager'] verwenden (https://developer.android.com/reference/android/content/pm/PackageManager.html#getPermissionGroupInfo (java. lang.String,% 20int)). – CommonsWare

Verwandte Themen