博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转:Android 监控网络状态http://developer.android.com/sdk/index.html#download
阅读量:4579 次
发布时间:2019-06-09

本文共 3160 字,大约阅读时间需要 10 分钟。

[html]
  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.     }  

public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity == null) { Log.i("NetWorkState", "Unavailabel"); return false; } else { NetworkInfo[] info = connectivity.getAllNetworkInfo(); if (info != null) { for (int i = 0; i < info.length; i++) { if (info[i].getState() == NetworkInfo.State.CONNECTED) { Log.i("NetWorkState", "Availabel"); return true; } } } } return false; }

 

上面这个方法就是判断网络是否连接的代码,返回true表示有网络,返回false表示无网络。  在Android网络应用程序开发中,经常要判断网络连接是否可用,因此经常有必要监听网络状态的变化。android的网络状态监听可以用BroadcastReceiver来接收网络状态改变的广  播,具体实现如下:

[html]
  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. }  

@Override public void onReceive(Context context, Intent intent) { Log.e(TAG, "网络状态改变"); boolean success = false; //获得网络连接服务 ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); // State state = connManager.getActiveNetworkInfo().getState(); State state = connManager.getNetworkInfo( ConnectivityManager.TYPE_WIFI).getState(); // 获取网络连接状态 if (State.CONNECTED == state) { // 判断是否正在使用WIFI网络 success = true; } state = connManager.getNetworkInfo( ConnectivityManager.TYPE_MOBILE).getState(); // 获取网络连接状态 if (State.CONNECTED != state) { // 判断是否正在使用GPRS网络 success = true; } if (!success) { Toast.makeText(LocationMapActivity.this, "您的网络连接已中断", Toast.LENGTH_LONG).show(); } }

在Activity的onCreate中:

[html]
  1. //注册网络监听  
  2. IntentFilter filter = new IntentFilter();   
  3. filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);  
  4. registerReceiver(mNetworkStateReceiver, filter);  
  5. //在Activity中的onDestroy中:'  
  6.   
  7. unregisterReceiver(mNetworkStateReceiver); //取消监听  

//注册网络监听 IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); registerReceiver(mNetworkStateReceiver, filter); //在Activity中的onDestroy中:' unregisterReceiver(mNetworkStateReceiver); //取消监听

转载于:https://www.cnblogs.com/wangqiuli5552/articles/2524293.html

你可能感兴趣的文章
自我介绍以及关于软件工程的问题
查看>>
struts (一)
查看>>
【新番推荐】工作细胞
查看>>
NYOJ 16 矩形嵌套
查看>>
Leetcode中的SQL题目练习(二)
查看>>
dubbo 集群容错源码
查看>>
Collection接口的子接口——Queue接口
查看>>
LINUX安装NGINX
查看>>
服务器启动项目抛错 没有到主机的路由
查看>>
python_85_sys模块
查看>>
第九周动手动脑
查看>>
HDU 1811 Rank of Tetris
查看>>
winform 获取当前名称
查看>>
报表分栏后的排序
查看>>
Django中models定义的choices字典使用get_FooName_display()在页面中显示值
查看>>
nohup命令详解(转)
查看>>
别人的Linux私房菜(1)计算机概论
查看>>
系统编程之文件操作
查看>>
ModelState.IsValid
查看>>
菜鸟之路——机器学习之线性回归个人理解及Python实现
查看>>