释放双眼,带上耳机,听听看~!

今天,简单讲讲android里如何解决getNetworkInfo过时的问题。

之前,我写了一篇博客,讲如何获取手机是否连网,其中有的代码用到了ConnectivityManager 的getNetworkInfo函数,但是最近检查代码时,发现getNetworkInfo已经过时,所以在网上查找了资料,发现关于这个的不多。但是还是有替代的函数判断手机是否联网。这里记录一下。

描述了当前网络 Mobile和Wifi的状态。

有2个内部类 NetworkInfo.DetailedState(精确的网络状态)和 NetworInfo.State(粗略的网路状态)

Detailed state

Coarse-grained state

IDLE

DISCONNECTED

SCANNING

CONNECTING

CONNECTING

CONNECTING

AUTHENTICATING

CONNECTING

CONNECTED

DISCONNECTING

DISCONNECTING

DISCONNECTED

DISCONNECTED

UNAVAILABLE

DISCONNECTED

FAILED

DISCONNECTED

里面几个常用函数

isAvailable()  isConnected()  getDetailedState()   getState()  getExtrInfo()

getType()  获取当前网络的类型mobile or Wi-Fi

getTypeName() 获取当前网络的类型名 “WIFI” or “MOBILE”

ConnectivityManager

用于查询网络连接状态,当网络状态发生改变时通知应用。通过调用Context.getSystemService(Context.CONNECTIVITY_SERVICE)。主要功能:

1.

监视网络(Wi-Fi,GPRS,UMTS,etc)的连接

2.

网络状态发生改变时发送广播

3.

网络丢失时尝试转移的别的网络

4.

提供API

主要函数介绍

1.

NetworkInfo   getActiveNetworkInfo()  获取可用网络(可用)

2.

NetworkInfo[]  getAllNetworkInfo   获取所有可用网络(已经过时)

3.

NetworkInfo   getNetworkInfo(int networkType) 获取固定网络信息  (已经过时)

4.

isNetworkTypeValid(int networkType)

Android判断当前网络状态是否连接函数

Public static Boolean isNetworkConnected(Context context) {

ConnectivityManager manager = (ConnectivityManager) context

.getApplicationContext().getSystemService(

Context.CONNECTIVITY_SERVICE);

if (manager == null) {

return false;

}

NetworkInfo networkinfo = manager.getActiveNetworkInfo();

if (networkinfo == null || !networkinfo.isAvailable()) {

return false;

}

return true;

}

或者这样也可以

/**

* 网络是否可用

*

* @param activity

* @return

*/

public static boolean isNetworkAvailable(Context context) {

ConnectivityManager connectivity = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

if (connectivity == null) {

} else {

NetworkInfo[] info = connectivity.getAllNetworkInfo();

if (info != null) {

for (int i = 0; i < info.length; i++) {

if (info[i].getState() == NetworkInfo.State.CONNECTED) {

return true;

}

}

}

}

return false;

}

更加严谨的写法:

public static boolean checkNet(Context context) {

try {

ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

if (connectivity != null) {

NetworkInfo info = connectivity.getActiveNetworkInfo();

if (info != null && info.isConnected()) {

if (info.getState() == NetworkInfo.State.CONNECTED) {

return true;

}

}

}

} catch (Exception e) {

return false;

}

return false;

}

简单讲讲,其实就是使用了ctiveNetworkInfo()替代了已经过时的getNetworkInfo(int networkType) ,这样就可以判断手机网络是否连接。如果判断网络类型,那怎么办呢?

/**

* 判断当前网络是否是wifi网络

* if(activeNetInfo.getType()==ConnectivityManager.TYPE_MOBILE) { //判断3G网

*

* @param context

* @return boolean

*/

public static boolean isWifi(Context context) {

ConnectivityManager connectivityManager = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

if (activeNetInfo != null

&& activeNetInfo.getType() == ConnectivityManager.TYPE_WIFI) {

return true;

}

return false;

}

/**

* 判断当前网络是否是3G网络

*

* @param context

* @return boolean

*/

public static boolean is3G(Context context) {

ConnectivityManager connectivityManager = (ConnectivityManager) context

.getSystemService(Context.CONNECTIVITY_SERVICE);

NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();

if (activeNetInfo != null

&& activeNetInfo.getType() == ConnectivityManager.TYPE_MOBILE) {

return true;

}

return false;

}

}

android 解决getNetworkInfo过时就讲完了。

就这么简单。

android system 频繁联网,android 解决getNetworkInfo过时相关推荐

  1. android 解决getNetworkInfo过时

    今天,简单讲讲android里如何解决getNetworkInfo过时的问题. 之前,我写了一篇博客,讲如何获取手机是否连网,其中有的代码用到了ConnectivityManager 的getNetw ...

  2. android system 分区大小,Android System分区大小异常

    平台:Freescale / Android 4.2.2 问题描述: 用 df 命令,看到/system分区大小275M. 用 busybox fdisk -l /dev/block/mmcblk0p ...

  3. 小米Android系统限制联网,Android 7 以上版本,绕过CA限制,抓取https

    环境 手机:小米5A 系统:MIUI 10 电脑:win10 抓包:mitmdump (可替换成其他抓包软件) 电脑需要安装: mitmdump(可替换成任意抓包软件) adb openssl 背景 ...

  4. 红米android system干什么的,Android System Webview是什么东西

    这是安卓系统内置webkit内核浏览器的一个组件,组件名称为Webview. WebView是安卓系统中一款基于webkit引擎.展现web页面的控件. Android的Webview在低版本和高版本 ...

  5. android system recovery%3c3e%3e,如何将QQ好友添加为微信好友

    微信与QQ是连接在一起的,下面我来介绍微信好友怎么加qq好友吧,有需了增加的朋友可参考参考. 1.先登录微信,然后进入微信,点击"微信底栏"-"添加朋友"如下图 ...

  6. 【Android 系统开发】 Android 系统启动流程简介

    作者 : 万境绝尘 (octopus_truth@163.com) 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/3889548 ...

  7. android 解决password过时

    今天,简单讲讲如何解决android:password 过时的问题.  这个其实很简单,之前自己讲过很多过时的代码,这个android:password 过时也经常遇到,只是一直没有花时间写成博客 ...

  8. android 解决setbackgrounddrawable过时

    今天,简单讲讲android如何解决  setbackgrounddrawable过时的问题. 之前,自己也讲了一些函数的过时的替代函数,昨天,自己在代码里又发现了setbackgrounddra ...

  9. android 清理缓存动画,Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解...

    最近接了一个项目其中有功能要实现一个清理内存,要求和微信的效果一样.于是想到用surfaceView而不是继承view.下面小编给大家解析下实现思路. surfaceView是为了解决频繁绘制动画产生 ...

最新文章

  1. 自由自在进口食品最具发展潜力的黄金产业
  2. win7怎么桌面能不能设置html,win7系统怎么格式化
  3. 【RabbitMQ】一文带你搞定RabbitMQ延迟队列
  4. 前端开发规范文档(html,css,js)
  5. 【2019年07月08日】A股最便宜的股票
  6. 又一尴尬问题!不少用户反馈iPhone 12屏幕特别“黄”
  7. PAT 1084. 外观数列 (20) - 乙级
  8. 如何在 Mac 上使用快速操作工作流程?
  9. 拓端tecdat|用R语言制作交互式图表和地图
  10. 初二计算机辅导记录,计算机一级OFFICE辅导:用Excel制作自动记录的考勤表
  11. 任玉刚——百度资深工程师学习之路
  12. 使用JMeter代理在谷歌浏览器中录制脚本
  13. mysql timeout的详细介绍
  14. Listener-session的钝化与活化
  15. 查找大于某个数的最小数
  16. 关于安装mathtype后找不到电脑预装office2016安装路径的问题
  17. Drawio免费绘图工具
  18. Adobe Audition生成正弦波音频
  19. MYSQL 如何实现重复读
  20. linux解压tar命令

热门文章

  1. Java的JFrame窗体的创建(两种方法)
  2. MYSQL 数据库对比 工具类
  3. 多颜色显示北京各县区-ArcGis操作
  4. 嘉定区科技小巨人企业市级奖励30万元、区级奖励15万元
  5. Noesis: 科学家们的语义搜索引擎
  6. 西门子PLC伺服大型20轴程序modbus通讯RS232通讯MES通讯气缸,通讯,机械手,模拟量等,各种FB块
  7. IT经典书籍——Head First系列…
  8. 【前端】利用HTML标签实现个人简历界面 <table>【HTML+CSS+JavaScript(JS)】
  9. 【HTML+CSS】移动端布局之响应式布局+Bootstrap框架
  10. 黑马程序员—编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?定义一个动物类,在动物类(animal)中有一个叫的抽象方法。 写两个子类,一个猫一个狗, * 继承自动物类,并实现相应的抽象方法。