Aplikasi yang menargetkan Android 13 (API level 33) atau versi lebih baru dan mengelola koneksi Wi-Fi
harus meminta
NEARBY_WIFI_DEVICES
izin runtime. Ini
izin akses lebih mudah untuk membenarkan akses aplikasi ke perangkat Wi-Fi di sekitar;
pada versi Android sebelumnya, aplikasi ini perlu mendeklarasikan
ACCESS_FINE_LOCATION
izin akses.
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 akses ini, sistem akan menampilkan satu
dan meminta pengguna untuk menyetujui akses aplikasi Anda ke perangkat di sekitar.
Di setelan sistem, pengguna harus mengaktifkan dan menonaktifkan Perangkat di sekitar
izin akses sebagai grup; misalnya, pengguna tidak dapat menonaktifkan
akses Wi-Fi tetapi tetap
Akses Bluetooth diaktifkan 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
memperoleh informasi lokasi
dari API Wi-Fi; jika tidak, Anda harus
menegaskan hal itu. 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 menargetkan Android 13 atau yang lebih baru. Contohnya mencakup:
metode dari class WifiManager
:
Selain itu, karena izin NEARBY_WIFI_DEVICES
hanya tersedia di
Android 13 dan yang lebih baru, Anda harus menyimpan deklarasi untuk
ACCESS_FINE_LOCATION
untuk memberikan kompatibilitas mundur di aplikasi Anda. Namun, selama aplikasi Anda
tidak mengandalkan
informasi lokasi akurat, Anda dapat
setel versi SDK maksimum untuk 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 baru. 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 lebih rendah. Perhatikan pengandalan pada izin ACCESS_FINE_LOCATION
.