ConnectivityManager
menyediakan
API yang memungkinkan Anda meminta agar perangkat terhubung ke jaringan berdasarkan
berbagai kondisi yang mencakup kemampuan
perangkat dan opsi {i>data transport<i}.
Implementasi callback memberikan informasi ke aplikasi Anda tentang metode serta kemampuan koneksi yang saat ini terhubung jaringan. API ini memungkinkan Anda menentukan apakah perangkat saat ini terhubung ke jaringan yang memenuhi persyaratan aplikasi Anda.
Mengonfigurasi permintaan jaringan
Untuk menentukan jenis transportasi jaringan, seperti Wi-Fi atau seluler koneksi jarak jauh, dan kemampuan jaringan yang saat ini terhubung, seperti koneksi internet koneksi jarak jauh, Anda harus melakukan konfigurasi permintaan jaringan.
Deklarasikan NetworkRequest
yang
menjelaskan kebutuhan koneksi jaringan aplikasi Anda. Kode berikut membuat
meminta jaringan yang terhubung ke internet dan menggunakan Wi-Fi
atau koneksi seluler untuk jenis transport.
Kotlin
val networkRequest = NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build()
Java
NetworkRequest networkRequest = new NetworkRequest.Builder() .addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addTransportType(NetworkCapabilities.TRANSPORT_WIFI) .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR) .build();
Perhatikan bahwa beberapa koneksi bisa jauh lebih mahal dibandingkan yang lain (untuk
misalnya, koneksi seluler biasanya mahal). Gunakan
NetworkCapabilities#NET_CAPABILITY_NOT_METERED
untuk menentukan apakah koneksi itu mahal. Saat menggunakan koneksi berkuota,
coba kurangi konsumsi data aplikasi, atau tunda hingga perangkat memiliki
tanpa kuota.
Mengonfigurasi callback jaringan
Saat mendaftarkan NetworkRequest
dengan ConnectivityManager
, Anda harus
menerapkan
NetworkCallback
untuk menerima notifikasi tentang perubahan status koneksi dan jaringan
kemampuan IT.
Fungsi yang paling umum diterapkan di NetworkCallback
mencakup
berikut ini:
onAvailable()
menunjukkan bahwa perangkat terhubung ke jaringan baru yang memenuhi persyaratan kemampuan dan jenis transpor yang ditentukan dalamNetworkRequest
.onLost()
menunjukkan bahwa perangkat telah kehilangan koneksi ke jaringan.onCapabilitiesChanged()
menunjukkan bahwa kemampuan jaringan telah berubah. Tujuan ObjekNetworkCapabilities
memberikan informasi tentang kemampuan jaringan saat ini.
Kotlin
private val networkCallback = object : ConnectivityManager.NetworkCallback() { // network is available for use override fun onAvailable(network: Network) { super.onAvailable(network) } // Network capabilities have changed for the network override fun onCapabilitiesChanged( network: Network, networkCapabilities: NetworkCapabilities ) { super.onCapabilitiesChanged(network, networkCapabilities) val unmetered = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) } // lost network connection override fun onLost(network: Network) { super.onLost(network) } }
Java
private ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(@NonNull Network network) { super.onAvailable(network); } @Override public void onLost(@NonNull Network network) { super.onLost(network); } @Override public void onCapabilitiesChanged(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities) { super.onCapabilitiesChanged(network, networkCapabilities); final boolean unmetered = networkCapabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); } };
Mendaftar untuk update jaringan
Setelah Anda mendeklarasikan NetworkRequest
dan NetworkCallback
, gunakan metode
requestNetwork()
atau registerNetworkCallback()
fungsi untuk mencari jaringan yang akan
disambungkan dari perangkat yang memenuhi
NetworkRequest
. Status ini kemudian dilaporkan ke NetworkCallback
.
Kotlin
val connectivityManager = getSystemService(ConnectivityManager::class.java) as ConnectivityManager connectivityManager.requestNetwork(networkRequest, networkCallback)
Java
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(ConnectivityManager.class); connectivityManager.requestNetwork(networkRequest, networkCallback);