Android打开WLAN开关的广播状态监听
16lz
2022-05-21
Android打开WLAN开关的广播状态监听
Android中WLAN的广播监听的是WLAN状态的改变 ,Action是WifiManager.WIFI_STATE_CHANGED_ACTION,WLAN的状态系统定义了5种,分别是
WIFI_STATE_DISABLED WLAN已经关闭WIFI_STATE_DISABLING WLAN正在关闭WIFI_STATE_ENABLED WLAN已经打开WIFI_STATE_ENABLING WLAN正在打开WIFI_STATE_UNKNOWN 未知
下面看实例代码:
public class WLANListener { private Context mContext; private WLANBroadcastReceiver receiver; private WLANStateListener mWLANStateListener; public WLANListener(Context context) { mContext = context; receiver = new WLANBroadcastReceiver(); } public void register(WLANStateListener listener) { mWLANStateListener = listener; if (receiver != null) { IntentFilter filter = new IntentFilter(); filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); mContext.registerReceiver(receiver, filter); } } public void unregister() { if (receiver != null) { mContext.unregisterReceiver(receiver); } } private class WLANBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent != null) { String action = intent.getAction(); /** wifi状态改变 */ if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) { if (mWLANStateListener != null) { Log.e("zhang", "WLANBroadcastReceiver --> onReceive--> WIFI_STATE_CHANGED_ACTION"); mWLANStateListener.onStateChanged(); } } /** * WIFI_STATE_DISABLED WLAN已经关闭 * WIFI_STATE_DISABLING WLAN正在关闭 * WIFI_STATE_ENABLED WLAN已经打开 * WIFI_STATE_ENABLING WLAN正在打开 * WIFI_STATE_UNKNOWN 未知 */ int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 0); switch (state) { case WifiManager.WIFI_STATE_DISABLED: if (mWLANStateListener != null) { Log.e("zhang", "WLANBroadcastReceiver --> onReceive--> WIFI_STATE_DISABLED"); mWLANStateListener.onStateDisabled(); } break; case WifiManager.WIFI_STATE_DISABLING: if (mWLANStateListener != null) { Log.e("zhang", "WLANBroadcastReceiver --> onReceive--> WIFI_STATE_DISABLING"); mWLANStateListener.onStateDisabling(); } break; case WifiManager.WIFI_STATE_ENABLED: if (mWLANStateListener != null) { Log.e("zhang", "WLANBroadcastReceiver --> onReceive--> WIFI_STATE_ENABLED"); mWLANStateListener.onStateEnabled(); } break; case WifiManager.WIFI_STATE_ENABLING: if (mWLANStateListener != null) { Log.e("zhang", "WLANBroadcastReceiver --> onReceive--> WIFI_STATE_ENABLING"); mWLANStateListener.onStateEnabling(); } break; case WifiManager.WIFI_STATE_UNKNOWN: if (mWLANStateListener != null) { Log.e("zhang", "WLANBroadcastReceiver --> onReceive--> WIFI_STATE_UNKNOWN"); mWLANStateListener.onStateUnknow(); } break; } } } } public interface WLANStateListener { void onStateChanged(); void onStateDisabled(); void onStateDisabling(); void onStateEnabled(); void onStateEnabling(); void onStateUnknow(); }}
在MianActivity中调用:
public class MainActivity extends AppCompatActivity { private WLANListener listener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listener = new WLANListener(this); listener.register(new WLANListener.WLANStateListener() { @Override public void onStateChanged() { Log.e("zhang", "MainActivity --> onStateChanged--> "); } @Override public void onStateDisabled() { Log.e("zhang", "MainActivity --> onStateDisabled--> "); } @Override public void onStateDisabling() { Log.e("zhang", "MainActivity --> onStateDisabling--> "); } @Override public void onStateEnabled() { Log.e("zhang", "MainActivity --> onStateEnabled--> "); } @Override public void onStateEnabling() { Log.e("zhang", "MainActivity --> onStateEnabling--> "); } @Override public void onStateUnknow() { Log.e("zhang", "MainActivity --> onStateUnknow--> "); } }); } @Override protected void onDestroy() { if (listener != null) { listener.unregister(); } super.onDestroy(); }}
更多相关文章
- 2013.03.19(5)———android 获取状态栏的高度
- Android(安卓)中文 API (30) ―― CompoundButton.OnCheckedChange
- Android-基本控件(SeekBar 可拖动 滚动条的使用)
- Android中检测手机制式和移动网络类型
- Android:打开程序的全屏页面
- Android四种Activity的加载模式
- Android监听来电和去电的实现方法
- Android初级教程小案例之单选框RadioGroup与复选框CheckBox
- Android(安卓)渐变色沉浸式状态栏