Effektive Handhabung von Berechtigungen in Android: Ein praktischer Leitfaden
Erfahren Sie, wie Sie effektiv mit den neuen Laufzeitberechtigungen in Android-Anwendungen umgehen. Von der Unterscheidung zwischen gefährlichen und normalen Berechtigungen bis hin zur praktischen Implementierung bietet dieser Beitrag einen umfassenden Leitfaden.
Was sind Android-Laufzeitberechtigungen?
Ab Android 6.0 (SDK 23) werden Benutzer zur Laufzeit aufgefordert, bestimmte Berechtigungen zu gewähren, wenn sie benötigt werden. Eine wichtige Frage lautet: Werden ältere Apps auf Android Marshmallow laufen? Die Antwort lautet ja, wenn die targetSdkVersion auf 22 oder niedriger eingestellt ist. Es ist jedoch zu beachten, dass Benutzer unter Marshmallow gefährliche Berechtigungen in den Einstellungen der App widerrufen können. Das Aufrufen einer Funktion, die eine noch nicht gewährte Berechtigung erfordert, führt zu einer Ausnahme (java.lang.SecurityException), die die Anwendung möglicherweise zum Absturz bringt. Daher ist die Integration dieses neuen Berechtigungsmodells in unsere Anwendung entscheidend.
Gefährliche und normale Android-Berechtigungen
Android unterscheidet zwischen gefährlichen und normalen Berechtigungen. Beide Typen müssen im Manifest der Anwendung angegeben werden. Ab Android 6.0 werden nur gefährliche Berechtigungen zur Laufzeit überprüft, während normale Berechtigungen ignoriert werden. Ein Beispiel für eine normale Berechtigung ist android.permission.INTERNET. Gefährliche Berechtigungen werden in Kategorien gruppiert, um Benutzern zu helfen zu verstehen, worauf die Anwendung Zugriff erhält. Wenn ein Benutzer eine Berechtigung innerhalb einer Gruppe/Kategorie akzeptiert, akzeptiert er die gesamte Gruppe. Beispiele für gefährliche Berechtigungen sind android.permission.FINE_LOCATION und android.permission.COARSE_LOCATION. Das Gewähren einer der Standortberechtigungen gewährt alle.
Anfordern von Android-Laufzeitberechtigungen
Die Methode requestPermissions(String[] permissions, int requestCode)
ist eine öffentliche Methode, die verwendet wird, um gefährliche Berechtigungen anzufordern. Wir können mehrere gefährliche Berechtigungen anfordern, indem wir ein String-Array von Berechtigungen übergeben. Hinweis: Android-Berechtigungen, die zu unterschiedlichen Gruppen gehören, zeigen dem Benutzer für jede Gruppe ein separates Dialogfeld an. Wenn sie zur selben Gruppe gehören, wird nur ein Dialog angezeigt. Die Ergebnisse der Anfragen werden an die Methode onRequestPermissionResult
übergeben.
Beispiel:
Angenommen, wir möchten in unserer App auf die Kamera und den Standort zugreifen. Beide sind gefährliche Berechtigungen. Wir zeigen beim Start der Anwendung einen Dialog an, der den Zugriff auf diese Berechtigungen anfordert.
String[] perms = {"android.permission.FINE_LOCATION", "android.permission.CAMERA"};
int permsRequestCode = 200;
requestPermissions(perms, permsRequestCode);
@Override
public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults){
switch(permsRequestCode){
case 200:
boolean locationAccepted = grantResults[0]==PackageManager.PERMISSION_GRANTED;
boolean cameraAccepted = grantResults[1]==PackageManager.PERMISSION_GRANTED;
break;
}
}
Um zu verhindern, dass der Benutzer die Berechtigungen erneut akzeptieren muss, überprüfen wir erneut, ob die Berechtigungen trotz vorheriger Genehmigung vorhanden sind. Dafür muss die Methode checkSelfPermission(String perm)
für jede Berechtigung aufgerufen werden.
Projektstruktur der Android-Laufzeitberechtigungen
Das Hauptlayout (content_main.xml) enthält die beiden Schaltflächen zum Überprüfen und Anfordern von Berechtigungen.
Mit einem effektiven Berechtigungsmanagement können Android-Entwickler sicherstellen, dass ihre Apps reibungslos funktionieren und gleichzeitig die Privatsphäre der Benutzer respektieren. Die ordnungsgemäße Implementierung von Laufzeitberechtigungen gemäß den Richtlinien von Google ist ein entscheidender Schritt für den Erfolg jeder modernen Android-Anwendung.