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

Apps, die auf Android 13 (API-Level 33) oder höher ausgerichtet sind und WLAN-Verbindungen verwalten, sollten die NEARBY_WIFI_DEVICES-Laufzeitberechtigung anfordern. Diese Berechtigung erleichtert es, den Zugriff einer App auf WLAN-Geräte in der Nähe zu rechtfertigen. In früheren Android-Versionen mussten diese Apps stattdessen die Berechtigung ACCESS_FINE_LOCATION deklarieren.

Die Berechtigung ist Teil der Gerätegruppe „Geräte in der Nähe“

Die Berechtigung NEARBY_WIFI_DEVICES ist Teil der Berechtigungsgruppe Geräte in der Nähe. Diese Gruppe wurde in Android 12 (API-Level 31) hinzugefügt und enthält auch Berechtigungen im Zusammenhang mit Bluetooth und Ultrabreitband. Wenn du eine beliebige Kombination von Berechtigungen aus dieser Berechtigungsgruppe anforderst, wird ein einzelnes Laufzeitdialogfeld angezeigt, in dem der Nutzer aufgefordert wird, den Zugriff deiner 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. Nutzer können beispielsweise nicht den WLAN-Zugriff deaktivieren, aber den Bluetooth-Zugriff für eine bestimmte App aktiviert lassen.

Nachdrücklich betonen, dass Ihre App den physischen Standort nicht ableitet

Wenn du Android 13 oder höher als Ziel verwendest, solltest du prüfen, ob deine App jemals Standortinformationen von WLAN-APIs ableitet. Wenn nicht, solltest du das unbedingt angeben. Setzen Sie dazu das Attribut usesPermissionFlags in der Manifestdatei Ihrer App auf neverForLocation, wie im folgenden Code-Snippet gezeigt. Dieser Vorgang ähnelt dem, den Sie ausführen, wenn Sie bestätigen, 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 frühere Versionen und einige APIs ist die Berechtigung zur Standortermittlung erforderlich.

Für mehrere WLAN-APIs ist die Berechtigung ACCESS_FINE_LOCATION erforderlich, auch wenn Ihre 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 die Abwärtskompatibilität in Ihrer App zu gewährleisten. Solange Ihre App jedoch nicht 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 Ihre App auf Android 13 oder höher ausgerichtet ist, müssen Sie die Berechtigung NEARBY_WIFI_DEVICES deklarieren, um eine der folgenden WLAN-APIs aufzurufen:

Workflows für den WLAN-Zugriff

Abbildung 1 zeigt den Workflow für den WLAN-Zugriff auf Geräten mit Android 13 oder höher für Apps, die auf Android 13 oder höher ausgerichtet sind. Solange ihr bestätigt, dass eure App den physischen Standort nicht aus WLAN-Geräteinformationen ableitet, müsst ihr die Berechtigung ACCESS_FINE_LOCATION nicht mehr deklarieren:

Abbildung 1. Flussdiagramm, um zu bestimmen, ob eine App, die auf Android 13 (API-Level 33) oder höher ausgerichtet ist, auf WLAN-Informationen zugreifen kann.

Abbildung 2 zeigt den Workflow für den WLAN-Zugriff auf Geräten mit 12L oder niedriger. Beachten Sie die Abhängigkeit von der Berechtigung ACCESS_FINE_LOCATION.

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