ConnectivityManager主要管理和網路連接相關的操作,NetworkInfo類包含了對wifi和mobile兩種網路模式串連的詳細描述,通過其getState()方法擷取的State對象則代表著串連成功與否等狀態。
CONNECTED
| Detailed state |
Coarse-grained state |
IDLE |
DISCONNECTED |
SCANNING |
CONNECTING |
CONNECTING |
CONNECTING |
AUTHENTICATING |
CONNECTING |
CONNECTED |
DISCONNECTING |
DISCONNECTING |
DISCONNECTED |
DISCONNECTED |
UNAVAILABLE |
DISCONNECTED |
FAILED |
DISCONNECTED |
State state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
if(State.CONNECTED==state){
Log.i("TAG", "GPRS網路已串連");
}
state = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if(State.CONNECTED==state){
Log.i("TAG“, "WIFI網路已串連");
}
//判斷網路是否可用</p><p>public static boolean isNetworkAvaiable(Context context){<br />ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);<br />NetworkInfo info = connectivityManager.getActiveNetworkInfo(); // 擷取代表連網狀態的NetWorkInfo對象<br />return (info != null && info.isConnected());<br />}</p><p>//判斷WIFI是否可用</p><p>public static boolean isWifiActive(Context context){</p><p>ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);<br />NetworkInfo[] info = connectivityManager.getAllNetworkInfo();<br />if(info!=null){<br />for(int i=0;i<info.length;i++){<br />//<br />if(info[i].getTypeName().equals(ConnectivityManager.TYPE_WIFI)&& info[i].isConnected())<br />return true;<br />}<br />}<br />return false;<br />}<br />
ConnectivityManager.TYPE_WIFI 表示wifi串連
ConnectivityManager.TYPE_MOBILE 表示3G串連
網路設定Intent:
new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS)
// 跳轉到無線網路設定介面
new Intent(android.provider.Settings.ACTION_WIFI_SETTINGS) // 跳轉到無線wifi網路設定介面
最後別忘了在mainifest檔案中加上許可權:
"<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>"