Apps, die auf Android 13 (API-Level 33) oder höher ausgerichtet sind und WLAN-Verbindungen verwalten, sollten die NEARBY_WIFI_DEVICES
Laufzeitberechtigung anfordern. Mit dieser Berechtigung lässt sich der Zugriff einer App auf WLAN-Geräte in der Nähe leichter rechtfertigen. Bei früheren Android-Versionen musste für diese Apps stattdessen die Berechtigung ACCESS_FINE_LOCATION
deklariert werden.
Die Berechtigung gehört zur Gruppe „Geräte in der Nähe“
Die Berechtigung NEARBY_WIFI_DEVICES
gehört zur Berechtigungsgruppe Geräte in der Nähe. Diese Gruppe, die in Android 12 (API-Level 31) hinzugefügt wurde, umfasst auch Berechtigungen im Zusammenhang mit Bluetooth und Ultrabreitband. Wenn Sie eine Kombination von Berechtigungen aus dieser Berechtigungsgruppe anfordern, zeigt das System ein einzelnes Laufzeitdialogfeld an und bittet den Nutzer, den Zugriff Ihrer App auf Geräte in der Nähe zu genehmigen.
In den Systemeinstellungen müssen Nutzer die Berechtigungen für Geräte in der Nähe als Gruppe aktivieren und deaktivieren. Sie können beispielsweise nicht den WLAN-Zugriff deaktivieren, aber den Bluetooth-Zugriff für eine bestimmte App aktiviert lassen.
Bestreiten Sie ausdrücklich, dass Ihre App den physischen Standort ermittelt
Wenn Sie Ihre App auf Android 13 oder höher ausrichten, sollten Sie prüfen, ob Ihre App Standortinformationen von Wi-Fi APIs ableitet. Ist dies nicht der Fall, sollten Sie dies unbedingt bestätigen. Legen Sie dazu in der Manifestdatei Ihrer App das Attribut usesPermissionFlags
auf neverForLocation
fest, wie im folgenden Code-Snippet gezeigt. Dieser Vorgang ähnelt dem, den Sie ausführen, wenn Sie angeben, dass Bluetooth-Geräteinformationen niemals für die Standortermittlung verwendet werden:
<manifest ...> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> <application ...> ... </application> </manifest>
Für frühere Versionen und einige APIs ist die Berechtigung zur Standortermittlung erforderlich
Für mehrere Wi-Fi APIs ist die Berechtigung ACCESS_FINE_LOCATION
erforderlich, auch wenn deine App auf Android 13 oder höher ausgerichtet ist. Beispiele sind die folgenden Methoden aus der Klasse WifiManager
:
Da die Berechtigung NEARBY_WIFI_DEVICES
nur unter Android 13 und höher verfügbar ist, sollten Sie alle Deklarationen für ACCESS_FINE_LOCATION
beibehalten, um für Abwärtskompatibilität in Ihrer App zu sorgen. Solange Ihre App jedoch nicht anderweitig auf genaue Standortinformationen angewiesen ist, können Sie die maximale SDK-Version dieser Berechtigung auf 32
festlegen, wie im folgenden Code-Snippet gezeigt:
<manifest ...> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" /> <application ...> ... </application> </manifest>
Nach APIs suchen, für die die Berechtigung erforderlich ist
Wenn deine App auf Android 13 oder höher ausgerichtet ist, musst du die Berechtigung NEARBY_WIFI_DEVICES
für den Aufruf einer der folgenden Wi-Fi APIs deklarieren:
WifiManager
WifiAwareManager
WifiAwareSession
WifiP2pManager
WifiRttManager
Workflows für den WLAN-Zugriff
Abbildung 1 zeigt den WLAN-Zugriffsworkflow auf Geräten mit Android 13 oder höher für Apps, die auf Android 13 oder höher ausgerichtet sind. Solange Sie angeben, dass Ihre App den physischen Standort nicht aus WLAN-Geräteinformationen ableitet, müssen Sie die Berechtigung ACCESS_FINE_LOCATION
nicht mehr angeben:
Abbildung 2 zeigt den WLAN-Zugriffsworkflow auf Geräten mit 12L oder weniger. Beachten Sie, dass die Berechtigung ACCESS_FINE_LOCATION
erforderlich ist.