獲取網絡鏈接狀態 html
隨着3G和Wifi的推廣,愈來愈多的Android應用程序須要調用網絡資源,檢測網絡鏈接狀態也就成爲網絡應用程序所必備的功能。 java
Android平臺提供了ConnectivityManager 類,用於網絡鏈接狀態的檢測。 android
Android開發文檔這樣描述ConnectivityManager 的做用: 編程
Class that answers queries about the state of network connectivity. It also notifies applications when network connectivity changes. Get an instance of this class by callingContext.getSystemService(Context.CONNECTIVITY_SERVICE). 安全
The primary responsibilities of this class are to: 網絡
private void checkNetworkInfo() { ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // mobile 3G Data Network State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState(); txt3G.setText(mobile.toString()); //顯示3G網絡鏈接狀態 // wifi State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); txtWifi.setText(wifi.toString()); //顯示wifi鏈接狀態 }
注: app
根據Android的安全機制,在使用ConnectivityManager時,必須在AndroidManifest.xml中添加<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 不然沒法得到系統的許可。 ide
運行結果(關閉3G及wifi網絡鏈接的狀態下) this
調用Android手機的網絡配置界面 spa
使用過Android手機上的手機QQ的朋友,應該知道,當QQ啓動時,若是沒有有效的網絡鏈接,QQ會提示轉入手機的網絡配置界面。這是如何實現的呢。其實很簡單啦
private void checkNetworkInfo() { ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); // mobile 3G Data Network State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState(); txt3G.setText(mobile.toString()); // wifi State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); txtWifi.setText(wifi.toString()); // 若是3G網絡和wifi網絡都未鏈接,且不是處於正在鏈接狀態 則進入Network Setting界面 由用戶配置網絡鏈接 if (mobile == State.CONNECTED || mobile == State.CONNECTING) return ; if (wifi == State.CONNECTED || wifi == State.CONNECTING) return ; startActivity( new Intent(Settings.ACTION_WIRELESS_SETTINGS)); // 進入無線網絡配置界面 // startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); // 進入手機中的wifi網絡設置界面 }
startActivity( new Intent(Settings.ACTION_WIRELESS_SETTINGS)); // 進入無線網絡配置界面
若是調用
startActivity( new Intent(Settings.ACTION_WIFI_SETTINGS)); // 直接進入手機中的wifi網絡設置界面
在wifi網絡鏈接後 運行該程序
咱們能夠看到 wi-fi 狀態爲已鏈接(CONNECTED).