android 监听网络连接状态的改变
2015-12-04 14:33
721 查看
android
监听网络连接状态的改变
BroadcastReceiver
[java] view
plaincopy
1. public class MyReceiver extends BroadcastReceiver {
2.
@Override
3. public void onReceive(Context context, Intent intent) {
4.
// TODO Auto-generated method stub
5. //Toast.makeText(context, intent.getAction(), 1).show();
6.
ConnectivityManager manager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
7. NetworkInfo mobileInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
8.
NetworkInfo wifiInfo = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
9.
10. if(!mobileInfo.isConnected() && !wifiInfo.isConnected()) {
11. //网络不可以用
12. }else {
13. //网络可用
14.
}
15.
}
16.
17.
}
在清单文件中注册 BroadcastReceiver
[java] view
plaincopy
1. <receiver android:name=".MyReceiver">
2.
<intent-filter>
3. <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>
4.
</intent-filter>
5. </receiver>
要读取网络状态记得要加权限
[java] view
plaincopy
1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
程序第一次启动时会收到一个Broadcast
从 GPRS 到 WIFI,程序至少会收到3个Broadcast
第一个是连接到WIFI
第二个是断开GPRS
第三个是连接到WIFI
从WIFI到GPRS,程序至少会收到2个Broadcast
第一个是断开Wifi
第二个是连接到GPRS
/**
* 注册网络状态监听器(广播接收者)
*/
private
void registerReceiver(){
IntentFilter filter=new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
netStateReceiver=new NetStateReceiver();
this.registerReceiver(netStateReceiver, filter);
}
/**
* 注销网络状态监听器
*/
private
void unregisterReceiver(){
if(netStateReceiver!=null){
this.unregisterReceiver(netStateReceiver);
}
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析