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 Laufzeitberechtigung NEARBY_WIFI_DEVICES anfordern. Diese Berechtigung erleichtert die Rechtfertigung des Zugriffs einer App auf WLAN-Geräte in der Nähe. In früheren Android-Versionen mussten diese Apps stattdessen die Berechtigung ACCESS_FINE_LOCATION deklarieren.

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, enthält auch Berechtigungen für Bluetooth und Ultrabreitband. Wenn Sie eine beliebige Kombination von Berechtigungen aus dieser Berechtigungsgruppe anfordern, zeigt das System ein einzelnes Laufzeitdialogfeld 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 für Geräte in der Nähe als Gruppe aktivieren und deaktivieren. Nutzer können beispielsweise den WLAN-Zugriff nicht deaktivieren, aber den Bluetooth-Zugriff für eine bestimmte App aktiviert lassen.

Sie betonen nachdrücklich, dass Ihre App keine physischen Standorte ableitet.

Wenn Sie Android 13 oder höher als Zielplattform verwenden, sollten Sie prüfen, ob Ihre App jemals Standortinformationen aus WLAN-APIs ableitet. Wenn nicht, sollten Sie dies unbedingt angeben. Um diese Behauptung aufzustellen, legen Sie das Attribut usesPermissionFlags im Manifest Ihrer App auf neverForLocation fest, 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 den Standort 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 für Methoden 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 in Ihrer App Abwärtskompatibilität zu gewährleisten. 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 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 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 Sie bestätigen, dass Ihre App den physischen Standort nicht aus WLAN-Geräteinformationen ableitet, müssen Sie 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 Workflow für den WLAN-Zugriff auf Geräten mit Android 12L oder niedriger. 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 ausgerichtet ist, auf WLAN-Informationen zugreifen kann.