android system 频繁联网,android 解决getNetworkInfo过时
释放双眼,带上耳机,听听看~!
今天,简单讲讲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过时相关推荐
- android 解决getNetworkInfo过时
今天,简单讲讲android里如何解决getNetworkInfo过时的问题. 之前,我写了一篇博客,讲如何获取手机是否连网,其中有的代码用到了ConnectivityManager 的getNetw ...
- android system 分区大小,Android System分区大小异常
平台:Freescale / Android 4.2.2 问题描述: 用 df 命令,看到/system分区大小275M. 用 busybox fdisk -l /dev/block/mmcblk0p ...
- 小米Android系统限制联网,Android 7 以上版本,绕过CA限制,抓取https
环境 手机:小米5A 系统:MIUI 10 电脑:win10 抓包:mitmdump (可替换成其他抓包软件) 电脑需要安装: mitmdump(可替换成任意抓包软件) adb openssl 背景 ...
- 红米android system干什么的,Android System Webview是什么东西
这是安卓系统内置webkit内核浏览器的一个组件,组件名称为Webview. WebView是安卓系统中一款基于webkit引擎.展现web页面的控件. Android的Webview在低版本和高版本 ...
- android system recovery%3c3e%3e,如何将QQ好友添加为微信好友
微信与QQ是连接在一起的,下面我来介绍微信好友怎么加qq好友吧,有需了增加的朋友可参考参考. 1.先登录微信,然后进入微信,点击"微信底栏"-"添加朋友"如下图 ...
- 【Android 系统开发】 Android 系统启动流程简介
作者 : 万境绝尘 (octopus_truth@163.com) 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/3889548 ...
- android 解决password过时
今天,简单讲讲如何解决android:password 过时的问题. 这个其实很简单,之前自己讲过很多过时的代码,这个android:password 过时也经常遇到,只是一直没有花时间写成博客 ...
- android 解决setbackgrounddrawable过时
今天,简单讲讲android如何解决 setbackgrounddrawable过时的问题. 之前,自己也讲了一些函数的过时的替代函数,昨天,自己在代码里又发现了setbackgrounddra ...
- android 清理缓存动画,Android仿微信清理内存图表动画(解决surfaceView屏幕闪烁问题)demo实例详解...
最近接了一个项目其中有功能要实现一个清理内存,要求和微信的效果一样.于是想到用surfaceView而不是继承view.下面小编给大家解析下实现思路. surfaceView是为了解决频繁绘制动画产生 ...
最新文章
- 自由自在进口食品最具发展潜力的黄金产业
- win7怎么桌面能不能设置html,win7系统怎么格式化
- 【RabbitMQ】一文带你搞定RabbitMQ延迟队列
- 前端开发规范文档(html,css,js)
- 【2019年07月08日】A股最便宜的股票
- 又一尴尬问题!不少用户反馈iPhone 12屏幕特别“黄”
- PAT 1084. 外观数列 (20) - 乙级
- 如何在 Mac 上使用快速操作工作流程?
- 拓端tecdat|用R语言制作交互式图表和地图
- 初二计算机辅导记录,计算机一级OFFICE辅导:用Excel制作自动记录的考勤表
- 任玉刚——百度资深工程师学习之路
- 使用JMeter代理在谷歌浏览器中录制脚本
- mysql timeout的详细介绍
- Listener-session的钝化与活化
- 查找大于某个数的最小数
- 关于安装mathtype后找不到电脑预装office2016安装路径的问题
- Drawio免费绘图工具
- Adobe Audition生成正弦波音频
- MYSQL 如何实现重复读
- linux解压tar命令
热门文章
- Java的JFrame窗体的创建(两种方法)
- MYSQL 数据库对比 工具类
- 多颜色显示北京各县区-ArcGis操作
- 嘉定区科技小巨人企业市级奖励30万元、区级奖励15万元
- Noesis: 科学家们的语义搜索引擎
- 西门子PLC伺服大型20轴程序modbus通讯RS232通讯MES通讯气缸,通讯,机械手,模拟量等,各种FB块
- IT经典书籍——Head First系列…
- 【前端】利用HTML标签实现个人简历界面 <table>【HTML+CSS+JavaScript(JS)】
- 【HTML+CSS】移动端布局之响应式布局+Bootstrap框架
- 黑马程序员—编程实现:猫和狗都会叫,但猫是喵喵的叫,狗是汪汪的叫?定义一个动物类,在动物类(animal)中有一个叫的抽象方法。 写两个子类,一个猫一个狗, * 继承自动物类,并实现相应的抽象方法。