Android WiFi状态侦听器

Android WiFi状态侦听器,android,broadcastreceiver,android-wifi,android-things,Android,Broadcastreceiver,Android Wifi,Android Things,我是Android开发新手。如何设置活动内WiFi连接/断开连接的侦听器?它必须在活动中,因为我在其中设置了UART连接,需要将WiFi状态信息发送到UART设备。我试过一些广播接收机的东西,但失败了。这是我最后一次尝试: private BroadcastReceiver myWifiReceiver = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent

我是Android开发新手。如何设置活动内WiFi连接/断开连接的侦听器?它必须在活动中,因为我在其中设置了UART连接,需要将WiFi状态信息发送到UART设备。我试过一些广播接收机的东西,但失败了。这是我最后一次尝试:

private BroadcastReceiver myWifiReceiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent) {
        ConnectivityManager connectivityManager = ((ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE));
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
        if(networkInfo != null && networkInfo.getType() == ConnectivityManager.TYPE_WIFI){
            if(networkInfo.isConnected()){
                Log.d("WIFI", "CONNECTED");
            }else{
                Log.d("WIFI", "DISCONNECTED");
            }
        }
}};
我可能还需要一些关于如何注册BroadcastReceiver的帮助,目前我正在活动的
onResume

this.registerReceiver(this.myWifiReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
并在
onPause
中:

this.unregisterReceiver(myWifiReceiver);
编辑:

感谢您的回答,我已经实现了我想要的,我将发布代码以供将来参考

private BroadcastReceiver myWifiReceiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent) {
        SupplicantState newState = intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE);

        switch(newState){
            case ASSOCIATED:
                Log.d("WIFI", "CONNECTED");
                break;
            case DISCONNECTED:
                if(!disconnected){
                    Log.d("WIFI", "DISCONNECTED");
                    disconnected = true;
                }
        }
}};
我还将
BroadcastReceiver
注册移动到
onStart
(并因此将注销移动到
onStop
),因为
onResume
并不总是被调用:

this.registerReceiver(this.myWifiReceiver, new IntentFilter(
        WifiManager.SUPPLICANT_STATE_CHANGED_ACTION));

根据“连接/断开连接”的含义,您可能没有观察到正确的广播操作<代码>连接管理器。默认连接完全建立或丢失时,将触发连接操作

您可能更感兴趣的是
WifiManager.suplicant\u CONNECTION\u CHANGE\u ACTION
WifiManager.suplicant\u STATE\u CHANGED\u ACTION
,它们会随着WiFi无线电的关联状态更改而触发

我试过一些广播接收机的东西,但失败了

如果上述行动不能满足您的需求,我鼓励您详细说明您正在经历的失败