Berechtigung für den Zugriff auf WLAN-Geräte in der Nähe anfordern

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:

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 1: Flussdiagramm zur Bestimmung, ob eine App, die auf Android 13 (API-Level 33) oder höher ausgerichtet ist, auf WLAN-Informationen zugreifen kann.

Abbildung 2 zeigt den WLAN-Zugriff auf Geräten mit bis zu 12 L. Beachten Sie, dass die Berechtigung ACCESS_FINE_LOCATION erforderlich ist.

Abbildung 2: Flussdiagramm zur Bestimmung, ob eine App, die auf 12l (API-Level 32) oder niedriger abzielt, auf WLAN-Informationen zugreifen kann.