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ı iznini istemelidir. Bu izin, bir uygulamanın yakındaki kablosuz cihazlara erişiminin gerekçelendirilmesini kolaylaştırır. Android'in önceki sürümlerinde bu uygulamaların 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 herhangi bir izin kombinasyonu 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ının sistem ayarlarında Yakındaki cihazlar izinlerini grup olarak etkinleştirmesi ve devre dışı bırakması gerekir. Örneğin, kullanıcılar kablosuz erişimini devre dışı bırakamaz, ancak belirli bir uygulama için Bluetooth erişimini etkin durumda tutamaz.
Kesinlikle uygulamanızın fiziksel konum bilgisi içermediğini iddia edin
Android 13 veya sonraki bir sürümü hedeflerken uygulamanızın konum bilgilerini Wi-Fi API'lerinden elde edip etmediğini düşünün; aksi takdirde bunu kesinlikle belirtmeniz gerekir. Bu onayı yapmak için uygulamanızın manifest dosyasında aşağıdaki kod snippet'inde gösterildiği gibi usesPermissionFlags
özelliğini neverForLocation
olarak ayarlayın. Bu işlem, Bluetooth cihaz bilgilerinin konum için hiçbir zaman kullanılmadığını iddia ettiğinizde yaptığınız işleme 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 konum izni gerektirir
Uygulamanız Android 13 veya sonraki bir sürümü hedeflese bile birçok Wi-Fi API için ACCESS_FINE_LOCATION
izni gerekir. Ö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 kullanılabildiğinden, uygulamanızda geriye dönük uyumluluk sağlamak için ACCESS_FINE_LOCATION
ile ilgili beyanları saklamanız gerekir. Ancak uygulamanız tam konum bilgilerine başka şekilde bağlı olmadığı sürece, aşağıdaki kod snippet'inde gösterildiği gibi bu iznin maksimum SDK sürümünü 32
olarak ayarlayabilirsiniz:
<manifest ...> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" /> <application ...> ... </application> </manifest>
İzni gerektiren API'leri kontrol et
Uygulamanız Android 13 veya sonraki bir sürümü hedefliyorsa aşağıdaki kablosuz API'lerden herhangi birini ç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 hedefleyen uygulamalar için Android 13 veya sonraki sürümleri çalıştıran cihazlarda kablosuz erişim iş akışı gösterilmektedir. Uygulamanızın, kablosuz ağ cihaz bilgilerinden fiziksel konum elde etmediğini iddia ettiğiniz sürece ACCESS_FINE_LOCATION
iznini artık beyan etmenize gerek olmadığını unutmayın:
Şekil 2'de 12 L veya daha düşük hızlarda çalışan cihazlarda kablosuz erişimi iş akışı gösterilmektedir. ACCESS_FINE_LOCATION
iznini kullandığınıza dikkat edin.