Android 监听wifi广播的两种方式
来源:互联网 发布:sci e数据库 编辑:程序博客网 时间:2024/05/20 07:50
1.XML中声明
<receiver android:name=".NetworkConnectChangedReceiver" >
<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>
2.代码中注册
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(new NetworkConnectChangedReceiver(), filter);
3.实现
package com.example.testss;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.net.ConnectivityManager;import android.net.NetworkInfo;import android.net.NetworkInfo.State;import android.net.wifi.WifiManager;import android.os.Parcelable;import android.util.Log;public class NetworkConnectChangedReceiver extends BroadcastReceiver { @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("H3c", "wifiState" + wifiState); switch (wifiState) { case WifiManager.WIFI_STATE_DISABLED: break; case WifiManager.WIFI_STATE_DISABLING: break; // } } // 这个监听wifi的连接状态即是否连上了一个有效无线路由,当上边广播的状态是WifiManager.WIFI_STATE_DISABLING,和WIFI_STATE_DISABLED的时候,根本不会接到这个广播。 // 在上边广播接到广播是WifiManager.WIFI_STATE_ENABLED状态的同时也会接到这个广播,当然刚打开wifi肯定还没有连接到有效的无线 if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) { Parcelable parcelableExtra = intent .getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); if (null != parcelableExtra) { NetworkInfo networkInfo = (NetworkInfo) parcelableExtra; State state = networkInfo.getState(); boolean isConnected = state == State.CONNECTED;// 当然,这边可以更精确的确定状态 Log.e("H3c", "isConnected" + isConnected); if (isConnected) { } else { } } } // 这个监听网络连接的设置,包括wifi和移动数据的打开和关闭。. // 最好用的还是这个监听。wifi如果打开,关闭,以及连接上可用的连接都会接到监听。见log // 这个广播的最大弊端是比上边两个广播的反应要慢,如果只是要监听wifi,我觉得还是用上边两个配合比较合适 if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())) {ConnectivityManager manager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo gprs = manager .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); NetworkInfo wifi = manager .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
Log.i(TAG, "网络状态改变:" + wifi.isConnected() + " 3g:" + gprs.isConnected());
NetworkInfo info = intent .getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO); if (info != null) { Log.e("H3c", "info.getTypeName()" + info.getTypeName()); Log.e("H3c", "getSubtypeName()" + info.getSubtypeName()); Log.e("H3c", "getState()" + info.getState()); Log.e("H3c", "getDetailedState()" + info.getDetailedState().name()); Log.e("H3c", "getDetailedState()" + info.getExtraInfo()); Log.e("H3c", "getType()" + info.getType()); if (NetworkInfo.State.CONNECTED == info.getState()) { } else if (info.getType() == 1) { if (NetworkInfo.State.DISCONNECTING == info.getState()) { } } } } }}
- Android 监听wifi广播的两种方式
- Android 监听wifi广播的两种方式
- Android 监听wifi广播的两种方式
- Android 监听wifi广播的两种方式
- 监听短信的两种方式之广播
- android中监听wifi广播的方法
- Android 广播监听WiFi的状态小结
- android广播的两种方式!
- Android 广播注册的两种方式
- android广播的两种方式!
- Android广播的两种注册方式
- android事件监听的两种方式
- Android-WiFi开发之 WiFi广播监听
- android注册广播的两种方式及优缺点
- Android 注册广播的两种方式区别
- Android 注册广播的两种方式区别
- android注册广播的两种方式及优缺点
- Android 注册广播的两种方式区别
- jquerymobile header导航和footer底部固定
- CentOS 6.0 系统 LAMP(Apache+MySQL+PHP)安装步骤
- sql server 登陆前握手期间发生错误
- 如何区分网站排名和网站优化
- 6410之点灯程序的反汇编代码分析
- Android 监听wifi广播的两种方式
- struts2_1学习笔记
- replace(/\s/g,"")中的/g是什么意思?
- [转]转第二天叫醒我的不是闹钟,其实还是梦想!
- jQueryDom操作之删除节点
- seo优化-外部链接的原则
- android的system下的目录以及根目录下的文件夹
- js学习笔记(一)
- IOS基础