网络连接状态对那些依赖网络的APP是必须的。以下有两种方法实现了对网络的检查。组合使用效果更加

第一中方法:使用ConnectivityManager 检查网络连接

主要步骤:

(1)获取ConnectivityManager对象。

(2)使用ConnectivityManager对象的getActiveNetworkInfo获取NetworkInfo 对象。

(3)使用ConnectivityManager对象的getNetworkInfo获取NetworkInfo对象,然后调用NetworkInfo 的getState方法返回网络连接类型

/*** 测试ConnectivityManager ConnectivityManager主要管理和网络连接相关的操作* 相关的TelephonyManager则管理和手机、运营商等的相关信息;WifiManager则管理和wifi相关的信息。* 想访问网络状态,首先得添加权限<uses-permission* android:name="android.permission.ACCESS_NETWORK_STATE"/>* NetworkInfo类包含了对wifi和mobile两种网络模式连接的详细描述,通过其getState()方法获取的State对象则代表着* 连接成功与否等状态。* */public void testConnectivityManager() {ConnectivityManager connManager = (ConnectivityManager) this.getSystemService(CONNECTIVITY_SERVICE);// 获取代表联网状态的NetWorkInfo对象NetworkInfo networkInfo = connManager.getActiveNetworkInfo();// 获取当前的网络连接是否可用if (null == networkInfo) {Toast.makeText(this, "当前的网络连接不可用", Toast.LENGTH_SHORT).show();// 当网络不可用时,跳转到网络设置页面startActivityForResult(new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS), 1);} else {boolean available = networkInfo.isAvailable();if (available) {Log.i("通知", "当前的网络连接可用");Toast.makeText(this, "当前的网络连接可用", Toast.LENGTH_SHORT).show();} else {Log.i("通知", "当前的网络连接不可用");Toast.makeText(this, "当前的网络连接不可用", Toast.LENGTH_SHORT).show();}}State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();if (State.CONNECTED == state) {Log.i("通知", "GPRS网络已连接");Toast.makeText(this, "GPRS网络已连接", Toast.LENGTH_SHORT).show();}state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();if (State.CONNECTED == state) {Log.i("通知", "WIFI网络已连接");Toast.makeText(this, "WIFI网络已连接", Toast.LENGTH_SHORT).show();}// // 跳转到无线网络设置界面// startActivity(new// Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS));// // 跳转到无限wifi网络设置界面// startActivity(new// Intent(android.provider.Settings.ACTION_WIFI_SETTINGS));
}

PS:代码是我从一个不知名的论坛粘贴过来的。本人为测试

第二种:使用BroadcasetReceiver监听网络连接

public class NetworkStateReceiver extends BroadcastReceiver {private static final String TAG = "NetworkStateReceiver";@Overridepublic void onReceive(Context context, Intent intent) {if (!isNetworkAvailable(context)) {Toast.makeText(context, "网络已经断开!", 0).show();} elseToast.makeText(context, "网络已经连接", 0).show();}/*** 网络是否可用* * @param context* @return*/public static boolean isNetworkAvailable(Context context) {//获取ConnectivityManager对象ConnectivityManager mgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);//获取当前网络连接列表NetworkInfo[] info = mgr.getAllNetworkInfo();if (info != null) {//遍历网络信息for (int i = 0; i < info.length; i++) {if (info[i].getState() == NetworkInfo.State.CONNECTED) {return true;}}}return false;}}

别忘了在AndroidManifest.xml 文件中配置Receiver

<receiver android:name=".NetworkStateReceiver" >
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

<category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
</receiver>

转载于:https://www.cnblogs.com/ywtk/p/3876076.html

使用ConnectivityManager 判断网络是否连接相关推荐

  1. android中怎么网络判断,Android中判断网络是否连接实例详解

    Android中判断网络是否连接实例详解 在android中,如何监测网络的状态呢,这个有的时候也是十分重要的,方法如下: public class ConnectionDetector { priv ...

  2. android 开发中判断网络是否连接的代码

    在android的开发中,尤其是与访问网络有关的开发,都要判断一下手机是否连接上了网络,下面是一个判断是否连接网络的嗲吗片段: package cn.com.karl.util;import com. ...

  3. android 网络连接 网络是否可用,Android 使用ping判断网络/WIFI连接是否可用

    最近项目中有一个网络判断的需求,因为终端只能连接wifi,wifi即使连接上也可能会出现不能连接网络的问题,所以需要进行网络连接的判断. ping的相关知识 使用ping检验网络是否可以连接 ping ...

  4. linux下判断网络是否连接

    本文改写自网上的一个程序,原始程序中为阻塞式调用,而且有进程创建的过程,非常不利于集成到自己程序中,因此对原始程序进行改造,使其可以完成发送一个imcp包的方式来判断网络连通,只需要调用改进后的 bo ...

  5. [WM][转]PPC中如何判断网络已经连接或者断开

    本文转自: 一起飞翔的Blog,原文见这里:http://www.17feixiang.com/article/jishu/74.htm 在PPC的开发中有时需要判断网络什么时候连接,什么时候断开,并 ...

  6. 易语言 判断网络是否连接

    易语言应用接口支持库->网络通信中有个是否与互联网连接命令,但是延迟太高,如果掉线了,会一直卡在那里. 所以可以用精易模块的网页访问对象命令,加上一个超时参数,来判断网络的连接状态. .版本 2 ...

  7. C++判断网络是否连接

    #include "Wininet.h" bool isConnected() { DWORD flag;bool con = InternetGetConnectedState( ...

  8. Android 监听网络连接状态,判断网络连接方式,9.0网络连接,获取已连接WiFi名称SSID和MAC

    获取已连接的WiFi名称 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> ...

  9. android监控网络是否连接(android监控网络请求apk)

    Android使用广播监听网络状态变化 一直收到系统广播 因为这个系统广播在不停的发送,系统网络状态在不停的变化.比如关闭,打开,扫描,正在连接,已连接等状态. android 代码怎么实时监控连接当 ...

最新文章

  1. 两两对应成排的 表格 样式
  2. python中的模运算符_Python中的字符串模运算符与format函数
  3. 代码神注释鉴赏,喜欢拿去用
  4. 5分钟轻松教您如果组建100-500路大型拼接监控系统!
  5. pythonjava有什么区别_Java与Python的区别对比
  6. SQL Server里的闩锁介绍
  7. linux新建mysql用户命令_使用MySQL命令行新建用户并授予权限
  8. 需要掌握的flex知识点
  9. python生成字典脚本
  10. 将h.264视频流封装成flv格式文件(二.开始动手)
  11. anaconda安装opencv
  12. windows中用注册表删除guest账户
  13. 根据当前谷歌浏览器版本获取或更新更新chromedriver.exe
  14. X_mind思维导图应用以及Windows和安卓软件下载(Free)
  15. linux 深度定制,基于ubuntu发行版的安装界面的深度定制过程
  16. 微软官方工具_微软官方免费数据恢复工具Windows File Recovery帮你恢复电脑误删文件...
  17. 角点检测和匹配之Harris与FAST角点检测
  18. 国外数据平台统计分析sdk
  19. 软件工程导论第六版 第五章 总体设计知识点总结
  20. 东京工业大学计算机毕业生去向,打开心扉 收获东京工业大学计算机专业offer

热门文章

  1. 曲线组合图 类型详情
  2. oracle找不到表分区,ORACLE分区表检索不到数据
  3. 【数论】蓝桥2018:第几个幸运数
  4. 最简单的基于FFmpeg的内存读写的例子:内存播放器
  5. FFMPEG结构体分析:AVCodec
  6. 悟空问答 模板 html,悟空问答上首页技巧每小时2500个阅读快速为自己吸粉.pdf
  7. 主要知识产权(专利权,著作权,商标权)的申请与保护
  8. ssm项目打包到云服务器,ssm项目打包到云服务器
  9. python多继承顺序及分配,python多继承的查找顺序是什么?
  10. JavaScript文档对象模型DOM节点概述(1)