Anda dapat menggunakan ConnectivityManager
untuk memeriksa apakah Anda tersambung ke internet, dan jika ya, untuk menentukan jenis koneksi apa yang sedang digunakan.
Menentukan apakah Anda memiliki koneksi internet atau tidak
Anda tidak dapat menjalankan update berdasarkan resource internet jika tidak tersambung ke internet. Cara yang direkomendasikan untuk menjadwalkan tugas yang memerlukan konektivitas internet adalah menggunakan WorkManager
. Untuk mengetahui informasi selengkapnya, buka Menjadwalkan tugas dengan WorkManager. Anda juga dapat menggunakan metode yang ditunjukkan dalam cuplikan berikut untuk mengkueri jaringan aktif secara interaktif guna menentukan apakah jaringan memiliki konektivitas internet.
Kotlin
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val activeNetwork: NetworkInfo? = cm.activeNetworkInfo val isConnected: Boolean = activeNetwork?.isConnectedOrConnecting == true
Java
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = cm.getActiveNetworkInfo(); boolean isConnected = activeNetwork != null && activeNetwork.isConnectedOrConnecting();
Catatan: getActiveNetworkInfo()
tidak digunakan lagi di Android 10. Sebagai gantinya, gunakan NetworkCallbacks
untuk aplikasi yang menargetkan Android 10 (API level 29) dan yang lebih tinggi.
Menentukan jenis koneksi internet
Anda juga dapat menentukan jenis koneksi internet yang saat ini tersedia.
Konektivitas perangkat dapat disediakan oleh data seluler, WiMAX, Wi-Fi, dan koneksi Ethernet. Dengan mengkueri jenis jaringan yang aktif, seperti yang ditunjukkan dalam contoh kode berikut, Anda dapat mengubah perilaku aplikasi berdasarkan bandwidth yang tersedia.
Kotlin
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager val isMetered = cm.isActiveNetworkMetered()
Java
ConnectivityManager cm = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); boolean isMetered = cm.isActiveNetworkMetered();
Catatan: Jika aplikasi Anda perlu mendukung Android 4.0 (API level 15) dan yang lebih rendah, gunakan ConnectivityManagerCompat.isActiveNetworkMetered
, bukan ConnectivityManager.isActiveNetworkMetered()
.
Biaya data seluler cenderung jauh lebih mahal daripada biaya Wi-Fi dan Ethernet. Saat menggunakan koneksi berbayar, Anda harus mencoba mengurangi penggunaan data aplikasi, atau bahkan menunda sampai Anda berada pada koneksi tidak berbayar.