Saya tidak ingin pengguna saya bahkan mencoba mengunduh sesuatu kecuali mereka memiliki Wi-Fi yang terhubung. Namun, saya hanya bisa mengetahui apakah Wi-Fi diaktifkan, tetapi mereka masih bisa memiliki koneksi 3G.
android.net.wifi.WifiManager m = (WifiManager) getSystemService(WIFI_SERVICE);
android.net.wifi.SupplicantState s = m.getConnectionInfo().getSupplicantState();
NetworkInfo.DetailedState state = WifiInfo.getDetailedStateOf(s);
if (state != NetworkInfo.DetailedState.CONNECTED) {
return false;
}
Namun, negara bukanlah yang saya harapkan. Meskipun Wi-Fi terhubung, saya menjadi OBTAINING_IPADDR
negara.
sumber
android.permission.ACCESS_NETWORK_STATE
AndroidManifest.xml Anda agar ini berfungsi.connectivityManager.getNetworkCapabilities(network).hasTransport(NetworkCapabilities.TRANSPORT_WIFI)
Karena metode NetworkInfo.isConnected () sekarang tidak digunakan lagi di API-23 , berikut adalah metode yang mendeteksi jika adaptor Wi-Fi aktif dan juga terhubung ke titik akses menggunakan WifiManager sebagai gantinya:
sumber
NetworkInfo.isConnected()
tidak terlihat usang bagi saya.android.permission.ACCESS_WIFI_STATE
Saya cukup menggunakan yang berikut ini:
Yang akan mengembalikan salah satu dari status ini pada saat Anda memanggil getSupplicantState ();
sumber
Saya menggunakan ini di aplikasi saya untuk memeriksa apakah jaringan yang aktif adalah Wi-Fi:
sumber
active
jaringan (yang akan digunakan untuk mengunduh) adalah WiFiNetworkInfo#isConnected
sudah ditinggalkanSaya telah melihat beberapa pertanyaan seperti ini dan muncul dengan ini:
Saya menggunakan if untuk memeriksa lisensi saya di Root Toolbox PRO, dan sepertinya berfungsi dengan baik.
sumber
getNetworkInfo()
akan mengembalikan nol, jika jaringan tidak ada. Jadi jika perangkat tidak memiliki koneksi seluler, ini akan menimbulkan kesalahan. Dalam kebanyakan kasus, TYPE_ETHERNET akan menyebabkan nol dalam kasus ini, karena sebagian besar perangkat tidak akan memiliki koneksi Ethernet.Sementara jawaban Jason benar, saat ini getNetWorkInfo (int) adalah metode yang sudah usang. Jadi, fungsi selanjutnya akan menjadi alternatif yang bagus:
sumber
Menggunakan
WifiManager
yang dapat Anda lakukan:Metode getNeworkId mengembalikan -1 hanya ketika itu tidak terhubung ke jaringan;
sumber
sumber
boolean isConnectedOrConnecting ()
Menunjukkan apakah konektivitas jaringan ada atau sedang dalam proses dibuat. Ini bagus untuk aplikasi yang perlu melakukan apa pun yang berhubungan dengan jaringan selain membaca atau menulis data. Untuk yang terakhir, panggilisConnected()
saja, yang menjamin bahwa jaringan sepenuhnya dapat digunakan.Kode berikut (dalam Kotlin) berfungsi dari API 21 hingga setidaknya versi API saat ini (API 29). Fungsi getWifiState () mengembalikan salah satu dari 3 nilai yang mungkin untuk status jaringan WiFi: Disable, EnabledNotConnected, dan Connected yang didefinisikan dalam kelas enum. Ini memungkinkan untuk mengambil keputusan yang lebih rinci seperti memberi tahu pengguna untuk mengaktifkan WiFi atau, jika sudah diaktifkan, untuk terhubung ke salah satu jaringan yang tersedia. Tetapi jika semua yang diperlukan adalah boolean yang menunjukkan jika antarmuka WiFi terhubung ke jaringan, maka fungsi lainnya adalahWifiConnected () akan memberi Anda itu. Ini menggunakan yang sebelumnya dan membandingkan hasilnya dengan Connected.
Ini terinspirasi dalam beberapa jawaban sebelumnya tetapi mencoba untuk memecahkan masalah yang diperkenalkan oleh evolusi Android API atau ketersediaan IP V6 yang perlahan meningkat. Triknya adalah menggunakan:
dari pada:
Menurut dokumentasi: https://developer.android.com/reference/kotlin/android/net/wifi/WifiInfo.html#getbssid itu akan mengembalikan nol jika tidak terhubung ke jaringan. Dan bahkan jika kita tidak memiliki izin untuk mendapatkan nilai sebenarnya, masih akan mengembalikan sesuatu selain nol jika kita terhubung.
Juga perhatikan hal berikut:
Dalam Manifest, jangan lupa untuk menambahkan:
Kode yang diusulkan adalah:
sumber
The
NetworkInfo
kelas ditinggalkan sebagai API tingkat 29, bersama dengan metode akses terkait sepertiConnectivityManager#getNetworkInfo()
danConnectivityManager#getActiveNetworkInfo()
.The dokumentasi sekarang menunjukkan orang-orang untuk menggunakan
ConnectivityManager.NetworkCallback
API untuk pemantauan callback asynchronized, atau penggunaanConnectivityManager#getNetworkCapabilities
atauConnectivityManager#getLinkProperties
untuk disinkronkan akses informasi jaringanUntuk memeriksa apakah WiFi terhubung, berikut adalah kode yang saya gunakan:
Kotlin:
Jawa:
Ingatlah untuk juga menambahkan izin
ACCESS_NETWORK_STATE
ke file Manifest Anda.sumber
Cobalah metode ini.
Metode ini akan membantu menemukan koneksi internet yang tersedia atau tidak.
sumber
Ini bekerja untuk saya:
Dan tambahkan izin ini:
sumber
Banyak jawaban menggunakan kode usang, atau kode yang tersedia di versi API yang lebih tinggi. Sekarang saya menggunakan sesuatu seperti ini
sumber
Inilah yang saya gunakan sebagai metode utilitas di aplikasi saya:
sumber
Di Android versi baru
dan menambahkan premisi juga
sumber
connManager.getAllNetworks()
membutuhkan API level 21.Mirip dengan jawaban @Jason Knight, tetapi dengan cara Kotlin:
sumber
ConnectivityManager.TYPE_WIFI
sudah ditinggalkanIni adalah solusi yang lebih mudah. Lihat pertanyaan Stack Overflow Memeriksa Wi-Fi diaktifkan atau tidak di Android .
PS Jangan lupa untuk menambahkan kode ke file manifes.xml untuk mengizinkan izin. Seperti yang ditunjukkan di bawah ini.
sumber
Mencoba
Ini mengembalikan 0 hingga perangkat memiliki koneksi yang dapat digunakan (pada mesin saya, Samsung SM-T280, Android 5.1.1).
sumber
Anda dapat mengaktifkan WIFI jika tidak diaktifkan sebagai berikut: 1. periksa status WIFI seperti yang dijawab oleh @Jason Knight 2. jika tidak diaktifkan, aktifkan jangan lupa untuk menambahkan izin WIFI dalam file manifes
Kelas Java Anda harus seperti itu
}
sumber
Tambahkan ini untuk JAWA:
dalam file Manifest tambahkan izin berikut:
sumber
Agak tua pertanyaan tapi ini yang saya gunakan. membutuhkan min api level 21 juga mempertimbangkan apotik Networkinfo yang sudah usang.
sumber