Android之监测手机网络状态的广播
来源:互联网 发布:win10游戏优化版 编辑:程序博客网 时间:2024/06/05 22:57
今天具体说下Android检测网络状态的广播,我们在做一些手机应用的时候如果网络发生改变可能会给用户造成一些损失,在中国2G,3G网络都没有普及的情况下,基本都是包流量的,所以在做一些视频应用软件的时候,如果用户在使用WIFI的时候如果无线网络中断,手机网络会自动换手机网络,从而给用户造成不必要的损失。
Android手机在对于一些系统广播,如短信的接收,电话的接收,电池电量过低,网络状态改变都会发一个广播,既然系统会发送一条广播,那么就需要一个接收器来处理这个广播。首先定义一个类继承NetworkChangeReceiver,重写onReceive()就行了。然后在OnReceive()这个方法进行相应广播的处理。
网络状态切换的广播类:
- package com.test;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.net.ConnectivityManager;
- import android.net.NetworkInfo.State;
- public class extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- State wifiState = null;
- State mobileState = null;
- ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
- wifiState = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
- mobileState = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
- if (wifiState != null && mobileState != null
- && State.CONNECTED != wifiState
- && State.CONNECTED == mobileState) {
- // 手机网络连接成功
- } else if (wifiState != null && mobileState != null
- && State.CONNECTED != wifiState
- && State.CONNECTED != mobileState) {
- // 手机没有任何的网络
- } else if (wifiState != null && State.CONNECTED == wifiState) {
- // 无线网络连接成功
- }
- }
- }
在上面这个接收类中OnReceive()方法,你可以在上面三个网络状态(只有手机网络,只有无线网络,没有任何网络)中进行相应的处理,然后在应用中注册广播,注册广播有2种方式,一种在androidmanifest.xml中注册,一种在java代码中注册。
第一种:
- <receiver
- android:name="com.test.NetworkBroadcast"
- android:label="NetworkConnection" >
- <intent-filter>
- <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
- </intent-filter>
- </receiver>
第二种:
可以在Activity的onCreate()方法中注册广播,在Activity的onDestory()方法中卸载广播。
- private BroadcastReceiver networkBroadcast=new BroadcastReceiver();
- private void registerNetworkReceiver() {
- IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
- this.registerReceiver(networkBroadcast, filter);
- }
- private void unRegisterNetworkReceiver() {
- this.unregisterReceiver(networkBroadcast);
- }
注意:在接收类中的onReceive()方法中不要处理太多复杂逻辑问题,尤其耗时的操作。
- Android之监测手机网络状态的广播
- Android之监测手机网络状态的广播
- Android之监测手机网络状态的广播
- Android之监测手机网络状态的广播
- Android之监测手机网络状态的广播
- Android之监测网络状态的广播
- Android监测手机网络状态变化的广播
- 监测手机网络状态的广播
- Android 监测手机网络状态变化
- 网络状态监测之 Reachability的使用
- 网络状态的监测
- 网络状态的监测
- Android 网络连通状态监测
- Android实践--监测网络状态
- Android实现监测网络状态
- Android检测网络状态的广播
- Android 网络状态变更的广播
- android监听网络状态的广播
- Android4.4:Kitkat给产品团队带来了哪些变化?
- javascript继承&设计模式&面向对象
- [转]Android的Handler总结
- 在 Mac OS X Lion 中查看剩余磁盘空间最简单的方法
- 嵌入式输入法的设计
- Android之监测手机网络状态的广播
- set标签的用法
- 《Windows via C/C++》学习笔记 (八) Windows 线程池 纤程
- JAVA 实现通过XPath查找结点元素
- string.Format 格式化时间,货币
- ubuntu Apache2 如何 设置 HTTPS
- 快速排序
- Linux 网络编程及底层实现过程
- TIME_WAIT状态原理