應用場景:實現判斷當前網絡是否可用
當前有可用網絡,如下圖:
當前沒有可用網絡,如下圖:
實現步驟:
1、獲取ConnectivityManager對象
Context context = activity.getApplicationContext(); // 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
2、獲取NetworkInfo對象
// 獲取NetworkInfo對象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo();
3、判斷當前網絡狀態是否為連接狀態
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) { return true; }
4、在AndroidManifest.xml中添加訪問當前網絡狀態權限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
代碼如下:
public class ClassTestDemoActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); if (isNetworkAvailable(ClassTestDemoActivity.this)) { Toast.makeText(getApplicationContext(), "當前有可用網絡!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(getApplicationContext(), "當前沒有可用網絡!", Toast.LENGTH_LONG).show(); } } /** * 檢查當前網絡是否可用 * * @param context * @return
*/
public boolean isNetworkAvailable(Activity activity) { Context context = activity.getApplicationContext(); // 獲取手機所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivityManager == null) { return false; } else { // 獲取NetworkInfo對象
NetworkInfo[] networkInfo = connectivityManager.getAllNetworkInfo(); if (networkInfo != null && networkInfo.length > 0) { for (int i = 0; i < networkInfo.length; i++) { System.out.println(i + "===狀態===" + networkInfo[i].getState()); System.out.println(i + "===類型===" + networkInfo[i].getTypeName()); // 判斷當前網絡狀態是否為連接狀態
if (networkInfo[i].getState() == NetworkInfo.State.CONNECTED) { return true; } } } } return false; } }
控制台打印出的結果: