安卓实时监听网络变化
来源:互联网 发布:孙侨潞淘宝店叫什么 编辑:程序博客网 时间:2024/05/30 04:44
思路:使用长驻型广播注册广播接收器,重写BroadcastReceiver的onReceive方法对网络状态的变化做相应处理
1、AndroidManifest里注册广播接收器
2、重写广播接收器继承自BroadcastReceiver
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.os.Parcelable;import android.util.Log;import android.widget.Toast;public class NetworkConnectChangedReceiver extends BroadcastReceiver { private String getConnectionType(int type) { String connType = ""; if (type == ConnectivityManager.TYPE_MOBILE) { connType = "3G网络数据"; } else if (type == ConnectivityManager.TYPE_WIFI) { connType = "WIFI网络"; } return connType; } @Override public 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("xiaoqiang", "wifiState:" + wifiState); switch (wifiState) { case WifiManager.WIFI_STATE_DISABLED: break; case WifiManager.WIFI_STATE_DISABLING: break; } } // 监听wifi的连接状态即是否连上了一个有效无线路由 if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) { Parcelable parcelableExtra = intent .getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if (null != parcelableExtra) { // 获取联网状态的NetWorkInfo对象 NetworkInfo networkInfo = (NetworkInfo) parcelableExtra; //获取的State对象则代表着连接成功与否等状态 NetworkInfo.State state = networkInfo.getState(); //判断网络是否已经连接 boolean isConnected = state == NetworkInfo.State.CONNECTED; Log.e("xiaoqiang", "isConnected:" + isConnected); if (isConnected) { } else { } } } // 监听网络连接,包括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("xiaoqiang", getConnectionType(info.getType()) + "连上"); Toast.makeText(context, getConnectionType(info.getType()) + "连接成功", Toast.LENGTH_SHORT).show(); } } else { Log.i("xiaoqiang", getConnectionType(info.getType()) + "断开"); Toast.makeText(context, getConnectionType(info.getType()) + "断开", Toast.LENGTH_SHORT).show(); } } } }}
这样便轻松实现了app对网络状态的实时监听
参考:http://blog.csdn.net/qq_20785431/article/details/51520459
1 0
- 安卓实时监听网络变化
- 安卓监听APP网络状态变化
- 用Reachability实时监听网络的变化
- Andrid网络变化实时监听操作
- 安卓笔记 动态注册广播 监听网络变化
- 安卓通过广播实时监听当前网络状况
- 安卓通过广播实时监听当前网络状况
- 安卓EditText监听内容变化,实时获取编辑框内容
- 安卓网络监听
- android-实时监听网络变化的工具类
- Android 实时监测(监听)网络连接状态变化
- Android 实时监测(监听)网络连接状态变化
- Android 实时监测(监听)网络连接状态变化
- Android 实时监测(监听)网络连接状态变化
- 安卓实现通讯录变化的监听
- 【Android】安卓学习笔记之广播(一)动态注册监听网络变化
- html实时监听input变化
- 监听input内容实时变化
- 第8周项目4 字符串加密
- nutch学习
- Paoding Rose源码分析1-读取Rose配置文件
- 蓝宝书opengl环境搭建(freeglut、glew)
- Struts2 in action 笔记3
- 安卓实时监听网络变化
- 第七周 项目三负数把正数赶出队列
- 关于责任
- codeforceB. Mishka and trip
- Android studio如何查看Log文件夹
- css鼠标手型cursor属性
- 第七周--项目5排队看病模拟
- spring-定时
- Python内置函数map与reduce用法简介