Aplikasi yang menargetkan Android 13 (API level 33) atau yang lebih baru dan mengelola koneksi Wi-Fi
harus meminta
izin runtime
NEARBY_WIFI_DEVICES
. Izin
ini memudahkan Anda untuk membenarkan akses aplikasi ke perangkat Wi-Fi di sekitar;
di versi Android sebelumnya, aplikasi ini perlu mendeklarasikan izin
ACCESS_FINE_LOCATION
sebagai gantinya.
Izin adalah bagian dari grup perangkat di sekitar
Izin NEARBY_WIFI_DEVICES
adalah bagian dari grup izin Perangkat di sekitar. Grup ini, yang ditambahkan di Android 12 (API level 31), juga mencakup
izin yang terkait dengan Bluetooth dan Ultra-wideband. Saat Anda meminta
kombinasi izin dari grup izin ini, sistem akan menampilkan satu
dialog runtime dan meminta pengguna untuk menyetujui akses aplikasi ke perangkat di sekitar.
Di setelan sistem, pengguna harus mengaktifkan dan menonaktifkan izin Perangkat di sekitar
sebagai grup. Misalnya, pengguna tidak dapat menonaktifkan akses Wi-Fi, tetapi tetap
mengaktifkan akses Bluetooth untuk aplikasi tertentu.
Tegaskan dengan jelas bahwa aplikasi Anda tidak memperoleh lokasi fisik
Saat menargetkan Android 13 atau yang lebih tinggi, pertimbangkan apakah aplikasi Anda
akan mendapatkan informasi lokasi dari API Wi-Fi; jika tidak, Anda harus benar-benar
menegaskan hal tersebut. Untuk membuat pernyataan ini, tetapkan atribut usesPermissionFlags
ke
neverForLocation
dalam file manifes aplikasi, seperti yang ditampilkan dalam cuplikan
kode berikut. Proses ini serupa dengan yang Anda lakukan saat
menegaskan bahwa informasi perangkat Bluetooth tidak pernah digunakan untuk lokasi:
<manifest ...> <uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES" android:usesPermissionFlags="neverForLocation" /> <application ...> ... </application> </manifest>
Versi sebelumnya dan beberapa API memerlukan izin akses lokasi
Beberapa API Wi-Fi memerlukan izin ACCESS_FINE_LOCATION
, meskipun aplikasi
Anda menargetkan Android 13 atau yang lebih tinggi. Contohnya mencakup metode
berikut dari class WifiManager
:
Selain itu, karena izin NEARBY_WIFI_DEVICES
hanya tersedia di
Android 13 dan yang lebih tinggi, Anda harus menyimpan deklarasi apa pun untuk
ACCESS_FINE_LOCATION
guna memberikan kompatibilitas mundur di aplikasi. Namun, selama aplikasi Anda
tidak mengandalkan
informasi lokasi yang akurat, Anda dapat
menetapkan versi SDK maksimum izin ini ke 32
, seperti yang ditunjukkan dalam
cuplikan kode berikut:
<manifest ...> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" android:maxSdkVersion="32" /> <application ...> ... </application> </manifest>
Memeriksa API yang memerlukan izin
Jika aplikasi menargetkan Android 13 atau yang lebih tinggi, Anda harus mendeklarasikan
izin NEARBY_WIFI_DEVICES
untuk memanggil salah satu API Wi-Fi berikut:
WifiManager
WifiAwareManager
WifiAwareSession
WifiP2pManager
WifiRttManager
Alur kerja akses Wi-Fi
Gambar 1 menunjukkan alur kerja akses Wi-Fi pada perangkat yang menjalankan
Android 13 atau yang lebih tinggi, untuk aplikasi yang menargetkan
Android 13 atau yang lebih tinggi. Perlu diperhatikan bahwa selama Anda menegaskan bahwa aplikasi
Anda tidak mendapatkan lokasi fisik dari informasi perangkat Wi-Fi, Anda tidak
perlu mendeklarasikan izin ACCESS_FINE_LOCATION
lagi:
Gambar 2 menunjukkan alur kerja akses Wi-Fi pada perangkat yang menjalankan
12L atau yang lebih rendah. Perhatikan pengandalan pada izin ACCESS_FINE_LOCATION
.