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 网络改变监听相关推荐

  1. Android网络连接监听

    接收系统网络服务的广播接收者 public class NetStateReceiver extends BroadcastReceiver {private Handler handler;publ ...

  2. 安卓APP在运行时对全局进行网络状态监听的实现

    转载自:https://blog.51cto.com/wangjinchan/4752142 感谢博主:一粒程序米 分享 一.前言 怎么对APP进行全局的网络监听呢?仿照微信的无网状态下弹出的提示,应 ...

  3. android 2.1 监听电话状态并自动接听来电

    一.开发环境       Elispse5.5,JDK1.6,Aadroid 2.1 二.开发中使用到的重点技术点:       距离感应(SENSOR_SERVICE ),音讯管理(AUDIO_SE ...

  4. Python黑客编程基础3网络数据监听和过滤

    Python黑客编程3网络数据监听和过滤 课程的实验环境如下: •      操作系统:kali Linux 2.0 •      编程工具:Wing IDE •      Python版本:2.7. ...

  5. Android的Button监听

    1.android简单按钮监听----单个监听 start = (Button)findViewById(R.id.btnStart); start.setOnClickListener(new On ...

  6. android 软键盘监听、隐藏、显示、点击空白处隐藏和Android KEYCODE 键值大全

    android 软键盘监听.隐藏.显示.点击空白处隐藏. textView.setOnKeyListener(new View.OnKeyListener() {@Overridepublic boo ...

  7. Android检测网络状态监听网络变化

    网络状态改变.用户信息改变(帐户的钱),第一时间就要想到用观察者模式来实现 广播接收者,简单地把网络的变化通过接口抛出去 package com.qkt.face.et.receiver;import ...

  8. android 7.0 短信监控,Android 7.0 监听网络变化的示例代码

    Android7.0前,Android系统前网络切换时,会发广播,业务只要监听广播即可. public class NetChangeReceiver extends BroadcastReceive ...

  9. android 使用广播监听网络切换

    在Application中添加以下代码就可以监听网络切换 private BroadcastReceiver mNetworkStateReceiver = new BroadcastReceiver ...

最新文章

  1. 你真的掌握了并发编程volatile synchronized么?
  2. iOS 4.2 SDK安装
  3. python 基础学习3-函数
  4. 编写Java程序最容易犯的21种错误
  5. oracle从备份归档日志的方法集中回收
  6. 局部特征(5)——如何利用彩色信息 Color Descriptors
  7. hssfworkbook 单元格合并后宽度不生效_Excel表格“假”合并,有多牛?
  8. pythonapp自动化_GitHub - qdyxmas/PyAutoTest: python Autotest UI自动化 APP自动化 HTTP接口自动化...
  9. php常用库函数(二)
  10. 自动化所在语音识别研究中获进展
  11. 腾讯自然语言处理实习面经
  12. pycharm安装PyQT5教程
  13. 极域电子书包课堂管理系统怎么控屏_极域电子教室使用说明
  14. 一天干掉一只Monkey计划(三)——延迟渲染,及材质ID
  15. excel输出线性拟合曲线的斜率
  16. 一文搞懂什么是:种子轮、天使轮、ABC轮投资、IPO
  17. 【胡侃系列】基于多元回归模型的双十一购物狂欢节天猫商城销售额预测
  18. MYSQL(mysqld --initialize --console初始化的时候报错:Can‘t create directory ‘C:\web\mysql-8.0.11\data\‘)
  19. 第一次将所学的指针和递归结合在一起
  20. ubuntu 12.04下安装adobe flash

热门文章

  1. 停发薪水三个月后被解雇,程序员删除系统数据予以反击
  2. Oracle 通过15位或18位身份证号码计算年龄、出生年月日、性别
  3. mysql切换使用数据库_切换MySQL数据库步骤
  4. python 利用chinese_calendar 获取上一个工作日日期
  5. Vert.x Java开发指南——第二章 使用Vert.x编写最小可用Wiki
  6. 马琳:应该是最后一次参加军训 窝里横没有太大用
  7. 文本与字体样式2.0
  8. 手机端关闭微信浏览器
  9. pgbench测试PG参数
  10. 工业检测中物距、像距和焦距的关系相机视野的计算方法