Aplikasi yang menargetkan Android 13 (API level 33) atau yang lebih baru dan mengelola koneksi Wi-Fi
harus meminta
izin runtime
NEARBY_WIFI_DEVICES
. 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 izin Perangkat di sekitar
sebagai grup; misalnya, pengguna tidak dapat menonaktifkan akses Wi-Fi, tetapi
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
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
Anda menargetkan Android 13 atau yang lebih tinggi. Contohnya mencakup:
metode 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 lebih rendah. Perhatikan pengandalan pada izin ACCESS_FINE_LOCATION
.