歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android 監控網絡狀態

  1. public static boolean isNetworkAvailable(Context context) {  
  2.         ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);  
  3.         if (connectivity == null) {  
  4.             Log.i("NetWorkState", "Unavailabel");  
  5.             return false;  
  6.         } else {  
  7.             NetworkInfo[] info = connectivity.getAllNetworkInfo();  
  8.             if (info != null) {  
  9.                 for (int i = 0; i < info.length; i++) {  
  10.                     if (info[i].getState() == NetworkInfo.State.CONNECTED) {  
  11.                         Log.i("NetWorkState", "Availabel");  
  12.                         return true;  
  13.                     }  
  14.                 }  
  15.             }  
  16.         }  
  17.         return false;  
  18.     }  

上面這個方法就是判斷網絡是否連接的代碼,返回true表示有網絡,返回false表示無網絡。  在Android網絡應用程序開發中,經常要判斷網絡連接是否可用,因此經常有必要監聽網絡狀態的變化。android的網絡狀態監聽可以用BroadcastReceiver來接收網絡狀態改變的廣播,具體實現如下:

  1. @Override  
  2. public void onReceive(Context context, Intent intent) {  
  3. Log.e(TAG, "網絡狀態改變");  
  4.   
  5. boolean success = false;  
  6.   
  7. //獲得網絡連接服務  
  8. ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);  
  9. // State state = connManager.getActiveNetworkInfo().getState();  
  10. State state = connManager.getNetworkInfo(  
  11. ConnectivityManager.TYPE_WIFI).getState(); // 獲取網絡連接狀態  
  12. if (State.CONNECTED == state) { // 判斷是否正在使用WIFI網絡  
  13. success = true;  
  14. }  
  15.   
  16. state = connManager.getNetworkInfo(  
  17. ConnectivityManager.TYPE_MOBILE).getState(); // 獲取網絡連接狀態  
  18. if (State.CONNECTED != state) { // 判斷是否正在使用GPRS網絡  
  19. success = true;  
  20. }  
  21.   
  22. if (!success) {  
  23. Toast.makeText(LocationMapActivity.this, "您的網絡連接已中斷", Toast.LENGTH_LONG).show();  
  24. }   
  25.   
  26. }  
在Activity的onCreate中:
  1. //注冊網絡監聽  
  2. IntentFilter filter = new IntentFilter();   
  3. filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);  
  4. registerReceiver(mNetworkStateReceiver, filter);  
  5. //在Activity中的onDestroy中:'  
  6.   
  7. unregisterReceiver(mNetworkStateReceiver); //取消監聽  
Copyright © Linux教程網 All Rights Reserved