標籤:new splay access cloc class androi 網路連接 fine sys
目錄結構:
contents structure [+]
- 判斷網路
- 判斷是否有網路連接
- 判斷WIFI網路是否可用
- 判斷MOBILE網路是否可用
- 擷取當前網路連接的類型資訊
- 監聽網路
擷取網路資訊需要在AndroidManifest.xml檔案中加入相應的許可權。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
1.判斷網路1.1 判斷是否有網路連接
public boolean isNetworkConnected(Context context) {if (context != null) {ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();if (mNetworkInfo != null) {return mNetworkInfo.isAvailable();}}return false;}
1.2判斷WIFI網路是否可用
public boolean isWifiConnected(Context context) {if (context != null) {ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mWiFiNetworkInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);if (mWiFiNetworkInfo != null) {return mWiFiNetworkInfo.isAvailable();}}return false;}
這裡需要注意,該方法只是判斷當前環境下是否有可用的WIFI,並不是判斷是否已經串連上WIFI。
1.3 判斷MOBILE網路是否可用
public boolean isMobileConnected(Context context) {if (context != null) {ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mMobileNetworkInfo = mConnectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);if (mMobileNetworkInfo != null) {return mMobileNetworkInfo.isAvailable();}}return false;}
1.4 擷取當前網路連接的類型資訊
public static int getConnectedType(Context context) {if (context != null) {ConnectivityManager mConnectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();if (mNetworkInfo != null && mNetworkInfo.isAvailable()) {return mNetworkInfo.getType();}}return -1;}
getType()的傳回值可以是ConnectivityManager中的TYPE_MOBILE、TYPE_WIFI、TYPE_WIMAX、TYPE_ETHERNET、TYPE_BLUETOOTH、其他類型。
2.監聽網路
定義廣播接受者:
BroadcastReceiver connectionReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager mConnectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mNetworkInfo = mConnectivityManager .getActiveNetworkInfo(); int type = -1; if (mNetworkInfo != null && mNetworkInfo.isAvailable()) { type = mNetworkInfo.getType(); } if (type == ConnectivityManager.TYPE_WIFI) { Toast.makeText(MainActivity.this, "wifi", Toast.LENGTH_SHORT) .show(); } else if (type == ConnectivityManager.TYPE_MOBILE) { Toast.makeText(MainActivity.this, "網路可用", Toast.LENGTH_SHORT) .show(); }else if(type==-1){ Toast.makeText(MainActivity.this, "網路不可用", Toast.LENGTH_SHORT) .show(); }else{ Toast.makeText(MainActivity.this, "未知網路", Toast.LENGTH_SHORT) .show(); } } };
在合適的位置註冊:
IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(connectionReceiver, intentFilter);
在合適的位置取消註冊:
unregisterReceiver(connectionReceiver);
【Android】詳解Android 網路操作