Android监测手机网络状态变化的广播
android手机网络发生改变系统会发出相应的广播,我们只需要注册该广播就可以实时监测手机网络的变化了。
首先我们创建一个广播NetworkChangedReceiver继承系统广播BroadcastReceiver,在onReceive方法中做对应网络变化的处理逻辑就可以了:
public class NetworkChangedReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {int netWorkStates = NetworkUtil.getNetWorkStates(context);switch (netWorkStates) {case NetworkUtil.TYPE_NONE://断网了break;case NetworkUtil.TYPE_MOBILE://打开了移动网络break;case NetworkUtil.TYPE_WIFI://打开了WIFIbreak;default:break;}}
}
上述代码中使用到了NetworkUtil工具类,详细代码请看NetworkUtil
广播我们已经创建了,接下来注册就可以监听网络状态了,注册广播可以通过代码注册(动态注册)也可以通过清单文件注册(静态注册),下面分别介绍一下:
1. 代码注册:
NetworkChangedReceiver networkChangedReceiver = new NetworkChangedReceiver();
IntentFilter intentFilter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(networkChangedReceiver, intentFilter);
注意不要忘记在onDestroy()中解除注册
protected void onDestroy() {unregisterReceiver(networkChangedReceiver);super.onDestroy();
}
2. 清单文件注册:
<receiverandroid:name=".NetworkChangedReceiver"><intent-filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE"/></intent-filter>
</receiver>
两种注册方式均可,可根据项目中实际需求来决定使用其中一种。
警告:
清单文件注册不能适配android7.0及以上(targetSdkVersion ≥ N,清单文件注册失效,亲测没有收到广播)
原因:Android 7.0后台优化 详情请点击
Android 7.0 移除了三项隐式广播(CONNECTIVITY_ACTION、ACTION_NEW_PICTURE 和ACTION_NEW_VIDEO),以帮助优化内存使用和电量消耗。
Android 7.0 应用了以下优化措施:1. 面向 Android 7.0 开发的应用不会收到 CONNECTIVITY_ACTION 广播,即使它们已有清单条目来请求接受这些事件的通知。在 前台运行的应用如果使用 BroadcastReceiver 请求接收通知,则仍可以在主线程中侦听 CONNECTIVITY_CHANGE。2. 应用无法发送或接收 ACTION_NEW_PICTURE 或 ACTION_NEW_VIDEO 广播。此项优化会影响所有应用,而不仅仅是面向 Android 7.0 的应用。
现在不适配Android 7.0应该不可能了,所以大家就不要考虑清单文件注册了,直接代码动态注册就行了。
如果您对Android 7.0这一变更感觉不适应或者变更限制了您开发的需求,Android 框架提供多个解决方案来缓解对这些隐式广播的需求。例如,JobScheduler API 提供了一个稳健可靠的机制来安排满足指定条件(例如连入无限流量网络)时所执行的网络操作。您甚至可以使用JobScheduler 来适应内容提供程序变化。
Android监测手机网络状态变化的广播相关推荐
- android 获取手机网络状态
与网络相关的,就经常要做网络状态判断及信息获取.用到的类ConnectivityManager 和NetworkInfo //获取网络连接管理者ConnectivityManager connecti ...
- 采取监测记录网络运行状态_广播播控监测自动化系统改造探析
1.引言 媒体发展已经步入融媒体时代,广播作为传统媒体,以其制作成本低.时效性强.收听设备简单便捷且不受空间和时间限制的特点,依然拥有其独特地位和优势.因此广播节目播出安全也就显得尤为重要,播出单位必 ...
- Android network 手机网络
Android network 系统中对网络的判断和选在是在Connectivityervice这个服务中来处理的,在系统启动的时候会启动这个系统服务: 系统启动完毕后,ConnectivitySer ...
- android检测手机网络连接不上,Android WIFI及手机网络连接情况检查
手机开发时会涉及到一些需要网络或wifi的操作,有时需要了解情况在进行下一步的操作,如没有网络则用本地缓存,没有wifi则不进行大流量操作(更新APP等). 这里我就说一下我在开发时用到的相关代码. ...
- Android 通过WIFI状态监听广播,判断进入指定wifi范围
原文地址:http://blog.csdn.net/kongxiuqi/article/details/52524500 --------------------------------------- ...
- Android监听手机网络变化
Android监听手机网络变化 手机网络状态发生变化会发送广播,利用广播接收者,监听手机网络变化 效果图 注册广播接收者 <?xml version="1.0" encodi ...
- android BLE Peripheral 手机模拟设备发出BLE广播 BluetoothLeAdvertiser
android 从4.3系统开始可以连接BLE设备,这个大家都知道了.iOS是从7.0版本开始支持BLE.android 进入5.0时代时,开放了一个新功能,手机可以模拟设备发出BLE广播, 这个新功 ...
- Android 第十九课 大喇叭--广播机制----动态注册监听网络变化与静态注册实现开机启动
为了便于进行 系统级别的消息通知,Android引入了一套广播消息机制. 1.广播机制简介: 因为Android中的每个应用程序都可以对自己感兴趣的广播尽心注册,这样程序只会接收自己所关心的广播内容, ...
- android开发工具类之获得WIFI IP地址或者手机网络IP
有的时候我们需要获得WIFI的IP地址获得手机网络的IP地址,这是一个工具类,专门解决这个问题,这里需要两个权限: <uses-permission android:name="and ...
最新文章
- Android开发中的Handler和多线程
- Java8 Stream 函数式接口
- mysql explain insert_MySQL之EXPLAIN 执行计划详解
- boost::reinterpret_pointer_cast相关的测试程序
- python pdf转word 表格_太赞了!Pdf转Word,我用Python 轻松搞定表格和水印!
- POJ3435 Sudoku Checker【谜题+数独】
- jquery动态生成的元素添加事件的方法
- c++游戏编程 源代码
- Chromeedge好用扩展插件分享
- 【Matlab】除法取整函数用法
- 预充电电路工作原理_课堂 | 为什么锂电池在充电过程中首先要进行预充电
- Datablau产品之Kubernetes(K8S)部署
- can例程 ecu_ECU程序及CAN总线实现
- 什么软件测试苹果手机循环电池,教你如何检测苹果手机电池的损耗
- ASP.NET Core : 八.图说管道,唐僧扫塔的故事
- 网络(十三)之ACL的高级应用
- FPGA基础知识----第三章 第2节 综合和仿真
- 基于虚拟机Ubuntu系统下C语言简单编写程序
- 映美Jolimark TP108W 打印机驱动
- 出租车GPS轨迹数据和手机数据的研究价值