Android 13 (API düzeyi 33) veya sonraki sürümleri hedefleyen ve kablosuz bağlantıları yöneten uygulamalar NEARBY_WIFI_DEVICES
çalışma zamanı izni istemelidir. Bu izin, bir uygulamanın yakındaki kablosuz cihazlara erişimini gerekçelendirmeyi kolaylaştırır.
Android'in önceki sürümlerinde bu uygulamaların bunun yerine
ACCESS_FINE_LOCATION
iznini beyan etmesi gerekiyordu.
İzin, yakındaki cihazlar grubunun bir parçası
NEARBY_WIFI_DEVICES
izni, Yakındaki cihazlar izin grubunun bir parçasıdır. Android 12'de (API düzeyi 31) eklenen bu grup, Bluetooth ve ultra geniş bant ile ilgili izinleri de içerir. Bu izin grubundan izinlerin herhangi bir kombinasyonunu istediğinizde sistem tek bir çalışma zamanı iletişim kutusu gösterir ve kullanıcıdan, uygulamanızın yakındaki cihazlara erişimini onaylamasını ister.
Kullanıcı, sistem ayarlarında Yakındaki cihazlar izinlerini grup olarak etkinleştirip devre dışı bırakmalıdır. Örneğin, kullanıcılar kablosuz ağ erişimini devre dışı bırakamaz, ancak belirli bir uygulama için Bluetooth erişimini etkin tutamaz.
Uygulamanızın fiziksel konum elde etmediğini iddia etmek
Android 13 veya sonraki bir sürümü hedeflerken uygulamanızın konum bilgilerini Wi-Fi API'lerinden alıp almadığını göz önünde bulundurun. Aksi takdirde bunu güçlü bir şekilde iddia etmelisiniz. Bu onayı yapmak için aşağıdaki kod snippet'inde gösterildiği gibi uygulamanızın manifest dosyasında usesPermissionFlags
özelliğini neverForLocation
olarak ayarlayın. Bu işlem, Bluetooth cihaz bilgilerinin hiçbir zaman konum bilgisi için kullanılmadığını iddia ettiğiniz sürece benzer:
<manifest ...> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> <application ...> ... </application> </manifest>
Önceki sürümler ve bazı API'ler için konum izni gerekiyor
Uygulamanız Android 13 veya sonraki bir sürümü hedeflese bile birçok Wi-Fi API'si ACCESS_FINE_LOCATION
iznini gerektirir. Örnekler arasında WifiManager
sınıfından aşağıdaki yöntemler yer alır:
Ayrıca, NEARBY_WIFI_DEVICES
izni yalnızca Android 13 ve sonraki sürümlerde bulunduğundan, uygulamanızda geriye dönük uyumluluk sağlamak için ACCESS_FINE_LOCATION
beyanını saklamanız gerekir. Bununla birlikte, uygulamanız tam konum bilgilerine dayalı olmadığı sürece bu iznin maksimum SDK sürümünü aşağıdaki kod snippet'inde gösterildiği gibi 32
olarak ayarlayabilirsiniz:
<manifest ...> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" /> <application ...> ... </application> </manifest>
İzin gerektiren API'leri kontrol edin
Uygulamanız Android 13 veya sonraki bir sürümü hedefliyorsa aşağıdaki Wi-Fi API'lerini çağırmak için NEARBY_WIFI_DEVICES
iznini beyan etmeniz gerekir:
WifiManager
WifiAwareManager
WifiAwareSession
WifiP2pManager
WifiRttManager
Kablosuz erişim iş akışları
Şekil 1'de, Android 13 veya sonraki sürümleri çalıştıran cihazlarda Android 13 veya sonraki sürümleri hedefleyen uygulamalar için kablosuz erişim iş akışı gösterilmektedir. Uygulamanızın kablosuz cihaz bilgilerinden fiziksel konum elde etmediğini iddia ettiğiniz sürece artık ACCESS_FINE_LOCATION
iznini beyan etmeniz gerekmez:
Şekil 2'de, 12L veya daha düşük sürümleri çalıştıran cihazlardaki kablosuz erişimi iş akışı gösterilmektedir. ACCESS_FINE_LOCATION
izninin kullanımını not edin.