Perangkat yang menjalankan Android 10 (level API 29) dan yang lebih tinggi memungkinkan aplikasi Anda menambahkan kredensial jaringan agar perangkat terhubung secara otomatis ke titik akses Wi-Fi. Anda dapat memberikan saran jaringan mana yang sebaiknya terhubung menggunakan WifiNetworkSuggestion
. Platform tersebut akhirnya memilih jalur akses mana yang akan diterima berdasarkan input dari aplikasi Anda dan orang lain.
Contoh kode berikut menunjukkan cara memberikan kredensial untuk satu jaringan terbuka, satu WPA2, dan satu WPA3:
Kotlin
val suggestion1 = WifiNetworkSuggestion.Builder() .setSsid("test111111") .setIsAppInteractionRequired() // Optional (Needs location permission) .build() val suggestion2 = WifiNetworkSuggestion.Builder() .setSsid("test222222") .setWpa2Passphrase("test123456") .setIsAppInteractionRequired() // Optional (Needs location permission) .build() val suggestion3 = WifiNetworkSuggestion.Builder() .setSsid("test333333") .setWpa3Passphrase("test6789") .setIsAppInteractionRequired() // Optional (Needs location permission) .build() val suggestionsList = listOf(suggestion1, suggestion2, suggestion3) val wifiManager = context.getSystemService(Context.WIFI_SERVICE) as WifiManager val status = wifiManager.addNetworkSuggestions(suggestionsList); if (status != WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) { // do error handling here } // Optional (Wait for post connection broadcast to one of your suggestions) val intentFilter = IntentFilter(WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION); val broadcastReceiver = object : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (!intent.action.equals(WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION)) { return; } // do post connect processing here } }; context.registerReceiver(broadcastReceiver, intentFilter);
Java
final WifiNetworkSuggestion suggestion1 = new WifiNetworkSuggestion.Builder() .setSsid("test111111") .setIsAppInteractionRequired() // Optional (Needs location permission) .build() final WifiNetworkSuggestion suggestion2 = new WifiNetworkSuggestion.Builder() .setSsid("test222222") .setWpa2Passphrase("test123456") .setIsAppInteractionRequired() // Optional (Needs location permission) .build() final WifiNetworkSuggestion suggestion3 = new WifiNetworkSuggestion.Builder() .setSsid("test333333") .setWpa3Passphrase("test6789") .setIsAppInteractionRequired() // Optional (Needs location permission) .build() final List<WifiNetworkSuggestion> suggestionsList = new ArrayList<WifiNetworkSuggestion> {{ add(suggestion1); add(suggestion2); add(suggestion3); }}; final WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); final int status = wifiManager.addNetworkSuggestions(suggestionsList); if (status != WifiManager.STATUS_NETWORK_SUGGESTIONS_SUCCESS) { // do error handling here… } // Optional (Wait for post connection broadcast to one of your suggestions) final IntentFilter intentFilter = new IntentFilter(WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION); final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (!intent.getAction().equals( WifiManager.ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION)) { return; } // do post connect processing here... } }; context.registerReceiver(broadcastReceiver, intentFilter);
Saran dari aplikasi harus disetujui oleh pengguna sebelum platform memulai koneksi. Persetujuan ini diberikan oleh pengguna sebagai tanggapan terhadap pemberitahuan saat pertama kali platform menemukan jaringan yang cocok dengan salah satu saran dari aplikasi dalam hasil pemindaian. Ketika platform terhubung ke salah satu saran jaringan, setelan menampilkan teks yang menghubungkan koneksi jaringan ke aplikasi pemberi saran yang sesuai.
Menangani pengguna yang terputus koneksi
Jika pengguna menggunakan pemilih Wi-Fi untuk memutuskan koneksi secara eksplisit dari salah satu saran jaringan saat terhubung, maka jaringan itu masuk daftar hitam selama 24 jam. Selama periode daftar hitam, jaringan tersebut tidak akan dipertimbangkan untuk koneksi otomatis, meskipun aplikasi menghapus dan menambahkan kembali saran jaringan yang sesuai dengan jaringan.
Mengubah status persetujuan untuk aplikasi
Seorang pengguna yang menolak pemberitahuan saran jaringan akan menghapus izin CHANGE_WIFI_STATE
dari aplikasi. Pengguna dapat memberikan persetujuan ini di waktu berikutnya, dengan masuk ke menu kontrol Wi-Fi (Setelan > Aplikasi & notifikasi > Akses Aplikasi Khusus > Kontrol Wi-Fi > Nama aplikasi).