Android开发实时监听网络状态变化一般有两种方法:

1. 新建一个基类BasicActivity.class,在基类中注册网络监听广播NetworkChangeReceiver.class,所有页面的Activity都继承此基类BasicActivity.class

(1)网络状态改变监听类:NetWorkChangeReceiver.class

package com.rxandroid.receiver;import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.util.Log;/*** 监听网络状态变化* Created by Travis on 2017/10/11.*/public class NetWorkChangReceiver extends BroadcastReceiver {/*** 获取连接类型** @param type* @return*/private String getConnectionType(int type) {String connType = "";if (type == ConnectivityManager.TYPE_MOBILE) {connType = "3G网络数据";} else if (type == ConnectivityManager.TYPE_WIFI) {connType = "WIFI网络";}return connType;}@Overridepublic void onReceive(Context context, Intent intent) {if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(intent.getAction())) {// 监听wifi的打开与关闭,与wifi的连接无关int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0);Log.e("TAG", "wifiState:" + wifiState);switch (wifiState) {case WifiManager.WIFI_STATE_DISABLED:break;case WifiManager.WIFI_STATE_DISABLING:break;}}// 监听网络连接,包括wifi和移动数据的打开和关闭,以及连接上可用的连接都会接到监听if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {//获取联网状态的NetworkInfo对象NetworkInfo info = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);if (info != null) {//如果当前的网络连接成功并且网络连接可用if (NetworkInfo.State.CONNECTED == info.getState() && info.isAvailable()) {if (info.getType() == ConnectivityManager.TYPE_WIFI || info.getType() == ConnectivityManager.TYPE_MOBILE) {Log.i("TAG", getConnectionType(info.getType()) + "连上");}} else {Log.i("TAG", getConnectionType(info.getType()) + "断开");}}}}
}

(2)基类 BasicActivity

package com.rxandroid.activity;import android.content.IntentFilter;
import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;import com.rxandroid.receiver.NetWorkChangReceiver;/*** Activity基类:实时获取网络状态* create by Travis1022 on 2017-10-11*/
public class BasicActivity extends AppCompatActivity {private boolean isRegistered = false;private NetWorkChangReceiver netWorkChangReceiver;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//注册网络状态监听广播netWorkChangReceiver = new NetWorkChangReceiver();IntentFilter filter = new IntentFilter();filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);registerReceiver(netWorkChangReceiver, filter);isRegistered = true;}@Overrideprotected void onDestroy() {super.onDestroy();//解绑if (isRegistered) {unregisterReceiver(netWorkChangReceiver);}}
}

 (3) 在AndroidManifest.xml中声明广播以及对应的网络权限

<uses-permission android:name="android.permission.INTERNET"/><!-- 网络状态 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!--监听网络状态--><receiver android:name=".receiver.NetWorkChangReceiver" ><intent-filter><action android:name="android.net.conn.CONNECTIVITY_CHANGE" /><action android:name="android.net.wifi.WIFI_STATE_CHANGED" /><action android:name="android.net.wifi.STATE_CHANGE" /></intent-filter></receiver>

 此时就可以实时监听网络状态了。

转载于:https://www.cnblogs.com/xuanwei-qingfeng/p/7651906.html

Android实时监听网络状态相关推荐

  1. 使用Service和BroadcastReceiver实时监听网络状态

    很多时候我们都需要实时监听网络状态,当网络状态发生变化后通知程序实行不同的策略.  这里,我采用Service+BroadcastReceiver的形式实时监听网络变化. 原理是程序在背后启一个Ser ...

  2. android 网卡监听,Android实时监听网络的变化

    4中情况.1.无网  2.wifi 3.移动信号 4.网线 BroadcastReceiver netReceiver =new BroadcastReceiver(){ @Override publ ...

  3. uniapp 安卓端实时监听网络状态

    写在uniapp的APP.vue的onShow方法中 uni.onNetworkStatusChange(function(res) {                 if (res.isConne ...

  4. android 监听网络状态

    今天,讲讲怎么监听手机网络状态的改变. 一.加入网络权限 获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:nam ...

  5. Android通过使用系统广播监听网络状态的改变

    Android通过使用广播监听网络状态的改变 得先添加权限 //查看网络状态<uses-permission android:name="android.permission.ACCE ...

  6. Android开发动态的监听网络状态的变化

    主要思路:使用Android中的四大组件之:BrocastReceiver监听网络状态的变化.接收到网络状态改变的广播之后判断当前的网络是否可用. 创建广播接收器MyNetworkReceiver p ...

  7. 初识广播机制(监听网络状态的改变,监听网络是否可以使用)

    Android系统中的广播机制比较灵活,因为Android中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就只会接收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他应 ...

  8. IOS-网络(监听网络状态)

    1 // 2 // BWNetWorkTool.h 3 // IOS_0131_检测网络状态 4 // 5 // Created by ma c on 16/1/31. 6 // Copyright ...

  9. 网络安全netstat监听网络状态。

    网络安全netstat监听网络状态. Internet的通用语言是TCP/TP,它是一组协议,它规定在网络的第四层运输层有两种协议TCP.UDP.端口就是这两个协议打开的,端口分为源端口和目的端口,源 ...

最新文章

  1. 关于零拷贝的一点认识
  2. C++ 程序内存泄漏检测方法
  3. 前端学习(3069):vue+element今日头条管理-loding处理
  4. 原生javaScript中使用Ajax实现异步通信
  5. Python基础之完数输出
  6. python 12306抢票脚本_Python 12306抢火车票脚本
  7. Linux应用开发自学之路
  8. python mq_解析Python实现MQ消息队列以及消息队列的优点
  9. 教你电脑休眠如何取消
  10. Eclipse中将package,folder,source folder相互转换
  11. [精简]快速认识钢琴键盘
  12. 【Win8操作系统中OEM分区创建技巧】
  13. win8.1老是断网LOL老是掉线.net错误 问题集(win7适用)
  14. 实现《你的名字》同款滤镜,python+opencv
  15. asp.net+js+ajax实现手机移动端页面预览、剪裁、上传头像图片
  16. 数据库连接中useSSL是否为true 或者 false的选择
  17. Deepstream 资料阅读记录
  18. 科技周刊第六期:接近本质的东西才会长远
  19. Java学习第七天 ———— 第一周学习汇总(粗略)
  20. 2021年网络规划设计师论文真题

热门文章

  1. hadoop程序开发 --- python
  2. python如何安装Django框架
  3. 【C++】C++的拷贝控制
  4. HTTPS(身披SSL协议的HTTP)
  5. SpringBoot应用的集成测试
  6. 小程序使用wxParse解析html
  7. poj 3040 Allowance
  8. 【算法集中营】循环冗余校验
  9. SqlParameter
  10. ext 从头开始 extjs 控件 触发事件 的几种方式