Für Apps, die auf Android 13 (API-Level 33) oder höher ausgerichtet sind und WLAN-Verbindungen verwalten, muss die Laufzeit NEARBY_WIFI_DEVICES
angefordert werden. Mit dieser Berechtigung ist es einfacher, den Zugriff einer App auf WLAN-Geräte in der Nähe zu rechtfertigen. In früheren Android-Versionen musste für diese Apps stattdessen die Berechtigung ACCESS_FINE_LOCATION
deklariert werden.
Berechtigung ist Teil der Gerätegruppe in der Nähe
Die Berechtigung NEARBY_WIFI_DEVICES
ist Teil der Berechtigungsgruppe Geräte in der Nähe. Diese Gruppe, die in Android 12 (API-Level 31) hinzugefügt wurde, enthält auch Berechtigungen für Bluetooth und Ultrabreitband. Wenn Sie eine Kombination von Berechtigungen aus dieser Berechtigungsgruppe anfordern, zeigt das System ein einzelnes Dialogfeld zur Laufzeit an und fordert den Nutzer auf, den Zugriff Ihrer App auf Geräte in der Nähe zu genehmigen.
In den Systemeinstellungen muss der Nutzer die Berechtigungen Geräte in der Nähe als Gruppe aktivieren und deaktivieren. Nutzer können beispielsweise nicht den WLAN-Zugriff deaktivieren, aber den Bluetooth-Zugriff für eine bestimmte App aktiviert lassen.
Bekräftigen Sie eindeutig, dass Ihre App keinen physischen Standort ableitet
Wenn du deine App auf Android 13 oder höher ausrichtest, solltest du überlegen, ob deine App Standortinformationen von Wi-Fi APIs ableitet. Ist dies nicht der Fall, solltest du dies unbedingt bestätigen. Dazu setzen Sie das Attribut usesPermissionFlags
in der Manifestdatei Ihrer App auf neverForLocation
, wie im folgenden Code-Snippet gezeigt. Dieser Vorgang ähnelt der Vorgehensweise, wenn Sie festlegen, dass Bluetooth-Geräteinformationen nie für die Standortermittlung verwendet werden:
<manifest ...> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> <application ...> ... </application> </manifest>
Für Vorgängerversionen und einige APIs ist die Berechtigung zur Standortermittlung erforderlich
Einige WLAN-APIs erfordern die Berechtigung ACCESS_FINE_LOCATION
, auch wenn deine App auf Android 13 oder höher ausgerichtet ist. Beispiele hierfür 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 die Abwärtskompatibilität in Ihrer App zu gewährleisten. Solange Ihre App allerdings nicht auf genaue Standortinformationen basiert, 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>
Suchen Sie nach APIs, 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
deklarieren, um eine der folgenden Wi-Fi APIs aufzurufen:
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 du bestätigst, dass deine App den physischen Standort nicht aus WLAN-Geräteinformationen ableitet, musst du die Berechtigung ACCESS_FINE_LOCATION
nicht mehr deklarieren:
Abbildung 2 zeigt den WLAN-Zugriff auf Geräten mit bis zu 12 L. Beachten Sie, dass die Berechtigung ACCESS_FINE_LOCATION
erforderlich ist.