Android 网络改变监听
Android 实现网络改变监听,在我们用手机的时候,有时候需要切换网络,有时候在无线网络环境中,从流量状态下切换成wifi连接;而有时候在没有无线网络环境的地方,从wifi连接切换到流量连接,这时候app上的数据就需要判断了,如果在下载东西的情况下,一监听从wifi连接切换到流量连接的情况下,那么久应该停止下载,并提示用户是否继续用流量下载
所以网络改变的监听是从用户的角度去考虑的,当然我们自己有时候也需要用到,具体实现是监听系统发送的广播,而我的操作是监听到网络改变后,根据改变后的连接方式发送不同的广播出去,算是一个分发处理。
下面这个就是我自己定义的工具类:
老规矩,包名自己加入自己app的包名
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.text.TextUtils;import com.storey.utils.LogUtil;/*** @author Voctex 2015-07-28* @param if the network connectivity changed,this broadcast can receicer the* intent,and deal with it* */
public class ConnectChangeBroad extends BroadcastReceiver {private final static String WIFI_STATUS = "wifi_status";private final static String MOBAIL_STATUS = "mobail_status";private final static String NONET_STATUS = "nonet_status";private String networkStatus = NONET_STATUS;private String beforeStatus = NONET_STATUS;/*** @author Voctex 2015-07-28* @param All* the network status*/private enum InfcEnum {wifiE, mobailE, nonetE;}@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubString action = intent.getAction();if (TextUtils.equals(action, ConnectivityManager.CONNECTIVITY_ACTION)) {ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo mobNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);NetworkInfo wifiNetInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);if (mobNetInfo != null && !mobNetInfo.isConnected()&& wifiNetInfo != null && !wifiNetInfo.isConnected()) {// 没有网络时走这里networkStatus = NONET_STATUS;if (!TextUtils.equals(beforeStatus, networkStatus)) {beforeStatus = networkStatus;LogUtil.i("监听:没网了");sendBroadCastByNet(context, InfcEnum.nonetE);}} else {// 这里是有网络的情况下才走这里的if (mobNetInfo != null && mobNetInfo.isConnected()) {networkStatus = MOBAIL_STATUS;if (!TextUtils.equals(beforeStatus, networkStatus)) {beforeStatus = networkStatus;LogUtil.i("监听:有网了,移动数据");sendBroadCastByNet(context, InfcEnum.mobailE);}}if (wifiNetInfo != null && wifiNetInfo.isConnected()) {networkStatus = WIFI_STATUS;if (!TextUtils.equals(beforeStatus, networkStatus)) {beforeStatus = networkStatus;LogUtil.i("监听:有网了,wifi");sendBroadCastByNet(context, InfcEnum.wifiE);}}}} else {LogUtil.i("监听到的是非网络变化");}}private void sendBroadCastByNet(Context mContext, InfcEnum ie) {switch (ie) {case wifiE://sendBroadCast(mContext);break;case mobailE://sendBroadCast(mContext);break;case nonetE:break;default:break;}}private void sendBroadCast(Context mContext) {}}
这个工具类没什么好介绍的,会写广播的基本都看得懂,这个工具类可直接拿去用,谢谢各位~~~
Android 网络改变监听相关推荐
- Android网络连接监听
接收系统网络服务的广播接收者 public class NetStateReceiver extends BroadcastReceiver {private Handler handler;publ ...
- 安卓APP在运行时对全局进行网络状态监听的实现
转载自:https://blog.51cto.com/wangjinchan/4752142 感谢博主:一粒程序米 分享 一.前言 怎么对APP进行全局的网络监听呢?仿照微信的无网状态下弹出的提示,应 ...
- android 2.1 监听电话状态并自动接听来电
一.开发环境 Elispse5.5,JDK1.6,Aadroid 2.1 二.开发中使用到的重点技术点: 距离感应(SENSOR_SERVICE ),音讯管理(AUDIO_SE ...
- Python黑客编程基础3网络数据监听和过滤
Python黑客编程3网络数据监听和过滤 课程的实验环境如下: • 操作系统:kali Linux 2.0 • 编程工具:Wing IDE • Python版本:2.7. ...
- Android的Button监听
1.android简单按钮监听----单个监听 start = (Button)findViewById(R.id.btnStart); start.setOnClickListener(new On ...
- android 软键盘监听、隐藏、显示、点击空白处隐藏和Android KEYCODE 键值大全
android 软键盘监听.隐藏.显示.点击空白处隐藏. textView.setOnKeyListener(new View.OnKeyListener() {@Overridepublic boo ...
- Android检测网络状态监听网络变化
网络状态改变.用户信息改变(帐户的钱),第一时间就要想到用观察者模式来实现 广播接收者,简单地把网络的变化通过接口抛出去 package com.qkt.face.et.receiver;import ...
- android 7.0 短信监控,Android 7.0 监听网络变化的示例代码
Android7.0前,Android系统前网络切换时,会发广播,业务只要监听广播即可. public class NetChangeReceiver extends BroadcastReceive ...
- android 使用广播监听网络切换
在Application中添加以下代码就可以监听网络切换 private BroadcastReceiver mNetworkStateReceiver = new BroadcastReceiver ...
最新文章
- 你真的掌握了并发编程volatile synchronized么?
- iOS 4.2 SDK安装
- python 基础学习3-函数
- 编写Java程序最容易犯的21种错误
- oracle从备份归档日志的方法集中回收
- 局部特征(5)——如何利用彩色信息 Color Descriptors
- hssfworkbook 单元格合并后宽度不生效_Excel表格“假”合并,有多牛?
- pythonapp自动化_GitHub - qdyxmas/PyAutoTest: python Autotest UI自动化 APP自动化 HTTP接口自动化...
- php常用库函数(二)
- 自动化所在语音识别研究中获进展
- 腾讯自然语言处理实习面经
- pycharm安装PyQT5教程
- 极域电子书包课堂管理系统怎么控屏_极域电子教室使用说明
- 一天干掉一只Monkey计划(三)——延迟渲染,及材质ID
- excel输出线性拟合曲线的斜率
- 一文搞懂什么是:种子轮、天使轮、ABC轮投资、IPO
- 【胡侃系列】基于多元回归模型的双十一购物狂欢节天猫商城销售额预测
- MYSQL(mysqld --initialize --console初始化的时候报错:Can‘t create directory ‘C:\web\mysql-8.0.11\data\‘)
- 第一次将所学的指针和递归结合在一起
- ubuntu 12.04下安装adobe flash