Vor der M-Version war das Android-Berechtigungsmodell für die Benutzer zum Zeitpunkt der Installation eine Alles-oder-Nichts-Entscheidung. Dies bedeutet, dass ein Benutzer, wenn er eine App verwenden möchte, zunächst alle in der Anwendung enthaltenen Berechtigungen akzeptieren muss oder sich dafür entscheiden sollte, diese überhaupt nicht zu installieren. Dies führte dazu, dass viele Entwickler bei der Installation von Apps verloren gingen, eine Vertrauensstellung zwischen Benutzern und Entwicklern auftrat und andere Datenschutzprobleme auftraten.
Mit dem neuen Berechtigungsmodell können Benutzer Berechtigungen zur Laufzeit nach Bedarf genehmigen und diese Berechtigungen jederzeit verweigern. In diesem Artikel erfahren Sie, wie sich diese Änderung bei den Zugriffsberechtigungen auf Sie als Entwickler auswirkt und wie Ihre Benutzer Ihre Anwendungen sehen werden.
Es wird darauf hingewiesen, dass dieser Artikel vor der offiziellen Veröffentlichung von Android M geschrieben wurde. Daher können sich einige Informationen mit der offiziellen Veröffentlichung ändern.
Während Android M noch Berechtigungen benötigt, um in deklariert zu werden AndroidManifest.xml, Benutzer müssen nun die Verwendung dieser Berechtigung zur Laufzeit genehmigen oder ablehnen. Eine wichtige Änderung in der neuen Version von Android ist das android.permission.INTERNET
und android.permission.WRITE_EXTERNAL_STORAGE
wurden von einem Rating von herabgestuft gefährlich zu normal. Das bedeutet, dass Sie den Benutzer vor der Verwendung nicht auffordern müssen.
Beim Anfordern der Berechtigungsgenehmigung wird der Benutzer nach der Berechtigungsgruppe gefragt, anstatt jede einzelne Berechtigung innerhalb einer Gruppe zu genehmigen. Das heißt, wenn Ihre Anwendung sowohl SMS-Nachrichten senden als auch empfangen muss, wird Ihr Benutzer nur aufgefordert, die SMS-Berechtigungsgruppe zu genehmigen. Im Folgenden finden Sie eine Liste der derzeit unterstützten Berechtigungsgruppen in Android M Developer Preview 2, wie Sie in den Systemeinstellungen sehen.
Es sollte auch beachtet werden, dass Android eine robuste Funktionalität bietet Absicht
System, mit dem Entwickler Daten von anderen Anwendungen anfordern können. Anstatt die Kameraberechtigung anzufordern und eine Anwendung zu entwickeln, die die Kamera-APIs von Grund auf verwendet, können Sie den Benutzer mit einer bereits vertrauenswürdigen Kameraanwendung ein Bild aufnehmen lassen, um ein Bild in Ihre App zu bekommen. Die Berechtigungen für die Kamera werden von der Kamera-App übernommen.
Wenn Sie eine Funktion verwenden müssen, für die eine Berechtigung erforderlich ist, werden allgemeine Ereignisse angezeigt. Sie müssen zunächst prüfen, ob diese Berechtigung von Ihrem Benutzer bereits genehmigt wurde.
Wenn der Benutzer die Berechtigung nicht genehmigt hat, können Sie sie mit einem Berechtigungsdialogfeld präsentieren. Wenn Sie dies dem Benutzer zum ersten Mal vorlegen, muss der Benutzer die Berechtigung entweder verweigern oder genehmigen.
Wenn sie jedoch zuvor die Erlaubnis verweigert haben und erneut gefragt werden, haben sie die Möglichkeit, sich erneut von dieser Erlaubnis abzuwenden.
Sie können durch Aufrufen überprüfen, ob zuvor eine Berechtigung erteilt wurde checkSelfPermission
bevor Sie eine Funktion verwenden, für die diese Berechtigung erforderlich ist. Diese Methode liefert ein int
Wert basierend darauf, ob diese Berechtigung erteilt wird oder nicht.
Wenn es gleich ist PackageManager.PERMISSION_GRANTED
, dann können Sie wie erwartet fortfahren. Wenn diese Berechtigung jedoch noch nicht erteilt wurde, können Sie sie mit anfordern requestPermissions
, Übergeben eines Arrays von Berechtigungszeichenfolgen und einer benutzerdefinierten int
Code anfordern, um den Logikfluss Ihrer App zu verfolgen.
int hasLocationPermission = checkSelfPermission (Manifest.permission.ACCESS_FINE_LOCATION); int hasSMSPermission = checkSelfPermission (Manifest.permission.SEND_SMS); Listepermissions = new ArrayList (); if (hasLocationPermission! = PackageManager.PERMISSION_GRANTED) permissions.add (Manifest.permission.ACCESS_FINE_LOCATION); if (hasSMSPermission! = PackageManager.PERMISSION_GRANTED) permissions.add (Manifest.permission.SEND_SMS); if (! permissions.isEmpty ()) requestPermissions (permissions.toArray (neuer String [permissions.size ())), REQUEST_CODE_SOME_FEATURES_PERMISSIONS);
Einmal requestPermissions
aufgerufen wird, wird dem Benutzer ein Anforderungsdialogfeld für jede Berechtigungsgruppe angezeigt, für die Ihre Anwendung die Berechtigung anfordert. Es ist empfehlenswert, Berechtigungen nur bei Bedarf anzufordern, anstatt sie zu sammeln, wenn der Benutzer Ihre Anwendung zum ersten Mal startet.
Wenn Ihr Benutzer mit den Dialogen fertig ist, onRequestPermissionsResult
wird angerufen und kann in Ihrem abgerufen werden Aktivität
. Hier starten Sie entweder Ihre Funktion oder behandeln die Situation, in der Ihr Benutzer eine oder mehrere Berechtigungen abgelehnt hat.
Ein Beispiel, wie Sie prüfen können, ob eine Berechtigung erteilt oder abgelehnt wurde, ist im Folgenden dargestellt. Wenn der Benutzer alle erforderlichen Berechtigungen für Ihre Funktion abgelehnt hat, sollten Sie diese Funktion deaktivieren und den Benutzer darüber informieren, warum er in Ihrer Anwendung nicht funktioniert.
@Override public void onRequestPermissionsResult (int requestCode, String [] -Berechtigungen, int [] grantResults) switch (requestCode) case REQUEST_CODE_SOME_FEATURES_PERMISSIONS: for (int i = 0; i < permissions.length; i++ ) if( grantResults[i] == PackageManager.PERMISSION_GRANTED ) Log.d( "Permissions", "Permission Granted: " + permissions[i] ); else if( grantResults[i] == PackageManager.PERMISSION_DENIED ) Log.d( "Permissions", "Permission Denied: " + permissions[i] ); break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Während Apps, die auf Android M abzielen, für die Implementierung der neuen Berechtigungsdialogfelder und -methoden erforderlich sind, wird für Apps, die für frühere Android-Versionen erstellt wurden, Benutzern während der Installation immer noch eine Liste von Berechtigungen angezeigt. Obwohl Berechtigungen akzeptiert werden, bevor Benutzer Ihre App verwenden können, können sie jederzeit widerrufen werden.
Da die Infrastruktur für die Behandlung widerrufener Berechtigungen nicht in Anwendungen verfügbar ist, die auf weniger als Android M abzielen, werden alle Funktionen zurückgegeben, für die Berechtigungen erforderlich wären Null
, 0
, oder ein leerer Wert, wenn keine Berechtigungen erteilt werden. Dies kann zu unerwartetem Verhalten in Apps führen. Daher wird empfohlen, dass sich Entwickler darauf vorbereiten, ihre Apps so bald wie möglich auf das neue Android M-Berechtigungsmodell zu aktualisieren.
In diesem Artikel haben Sie etwas über das neue Android M-Berechtigungsmodell erfahren und erfahren, wie Sie aktualisierte Berechtigungen in Ihren Anwendungen unterstützen. Wir haben auch behandelt, wie Apps auf die neue Android-Version reagieren, wenn sie für frühere Versionen erstellt wurden. Mithilfe dieser Informationen sollten Sie in der Lage sein, Ihre Anwendungen für die offizielle Veröffentlichung des nächsten Updates für Android vorzubereiten.