要判斷wifi或者行動網路是否有連線
首先要先加入權限
首先要先加入權限
再使用下面程式碼
ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); //For Data network check boolean is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting(); //For WiFi Check boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
is3g true 代表行動網路有連線 false代表沒有
isWifi true 代表wifi有連線 false代表沒有
若想要知道網路的相關狀態
我們可以使用
ConnectivityManager CM = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = CM.getActiveNetworkInfo();
而當中要注意到的地方, 是在 NetworkInfo 這段, 倘若你的手機目前不在網路的服務範圍, 也就是說沒有任何方式可以連出去網路 則 CM.getActiveNetworkInfo() 取回的 Reference 會是 Null, 忘了做此判斷的話, 手機則會立刻罷工給你看 (NullPointerException) 而比較常見需要取得的資料如下:
info.getTypeName(); // 目前以何種方式連線 [WIFI] info.getState(); // 目前連線狀態 [CONNECTED] info.isAvailable(); // 目前網路是否可使用 [true] info.isConnected(); // 網路是否已連接 [true] info.isConnectedOrConnecting(); // 網路是否已連接 或 連線中 [true] info.isFailover(); // 網路目前是否有問題 [false] info.isRoaming(); // 網路目前是否在漫遊中 [false]
如果要偵測網路狀態改變
我們可以用一個BroadcastReceiver去監聽action
android.net.conn.CONNECTIVITY_CHANGE
跟
android.net.wifi.WIFI_STATE_CHANGED
如此就可以得知手機的連線狀態改變
參考網址:
http://wp.me/pCXXH-2Q
http://goo.gl/Ve9SnY
http://viralpatel.net/blogs/android-internet-connection-status-network-change/
http://developer.android.com/reference/android/net/NetworkInfo.html
沒有留言:
張貼留言