Android 13 (API düzeyi 33) veya sonraki sürümleri hedefleyen ve kablosuz bağlantıları yöneten uygulamalar
şunu istemelidir:
NEARBY_WIFI_DEVICES
çalışma zamanı iznine sahip olmanız gerekir. 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
ACCESS_FINE_LOCATION
izni almanız gerekir.
İzin, yakındaki cihazlar grubunun bir parçası
NEARBY_WIFI_DEVICES
izni, Yakındaki cihazlar'ın bir parçasıdır.
izin grubu. Android 12'de (API düzeyi 31) eklenen bu grup, şunları da içerir:
Bluetooth ve ultra geniş bantla ilgili izinler. Herhangi bir
bu izin grubundaki izinlerin bir kombinasyonunu görüyorsanız sistem, tek bir
çalışma zamanı iletişim kutusunda yer alır 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 ayarını etkinleştirmesi ve devre dışı bırakması gerekir
bir grup olarak izinler; Örneğin, kullanıcılar kablosuz erişimini devre dışı bırakamaz, ancak
Belirli bir uygulama için Bluetooth erişimi etkinleştirildi.
Uygulamanızın fiziksel konum elde etmediğini iddia etmek
Android 13 veya sonraki bir sürümü hedeflerken uygulamanızın
konum bilgilerini her zaman Wi-Fi API'lerinden türetir; eğer hayır ise,
iddia eder. Bu onaylamayı yapmak için usesPermissionFlags
özelliğini
Aşağıdaki kodda gösterildiği gibi, uygulamanızın manifest dosyasında neverForLocation
snippet'i Bu süreç,
Bluetooth cihaz bilgilerinin konum bilgisi için hiçbir zaman kullanılmadığını iddia edin:
<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
Bazı Wi-Fi API'leri, aşağıdaki durumlarda bile ACCESS_FINE_LOCATION
iznini gerektirir:
Uygulama Android 13 veya sonraki bir sürümü hedefliyorsa. Örnek olarak aşağıdakiler verilebilir:
WifiManager
sınıfından yöntemler:
Ayrıca, NEARBY_WIFI_DEVICES
izni yalnızca şurada kullanılabildiğinden:
Android 13 ve sonraki sürümler için
ACCESS_FINE_LOCATION
ve uygulamanızda geriye dönük uyumluluk sağlamak için kullanılır. Ancak, uygulamanız
proje yaşam döngüsü boyunca
tam konum bilgisi kullanıyorsanız,
bu iznin maksimum SDK sürümünü şurada gösterildiği gibi 32
olarak ayarlayın:
şu kod snippet'ini kullanabilirsiniz:
<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 kablosuz API'lerini çağırmak için NEARBY_WIFI_DEVICES
izni:
WifiManager
WifiAwareManager
WifiAwareSession
WifiP2pManager
WifiRttManager
Kablosuz erişim iş akışları
Şekil 1'de, çalışan cihazlardaki kablosuz erişimi iş akışı gösterilmektedir
Şu kitleyi hedefleyen uygulamalar için Android 13 veya sonraki sürümler:
Android 13 veya sonraki sürümler.
uygulama, kablosuz cihaz bilgilerinden fiziksel konum elde etmezse
ACCESS_FINE_LOCATION
iznini artık beyan etmeniz gerekiyor:
Şekil 2'de, çalışan cihazlardaki kablosuz erişimi iş akışı gösterilmektedir
12L veya daha düşük. Bu kaynaklardaki
ACCESS_FINE_LOCATION
izni.