为什么WiFi broadCast Receiver不会更新收到的信息?

时间:2014-11-09 13:58:19

标签: android broadcastreceiver android-broadcast wifimanager

我真的不知道下面的代码中缺少了什么。我想要做的是,根据当前连接和network当前状态显示一些WiFiWiFi信息。例如,如果应用程序正在运行且用户决定关闭WiFi,则应自动显示一些文本以显示当前BSSID=00.00.00.00speed= -1Mbps {{1}如果用户决定将RSSI=0打开,那么之前提到的相同信息应显示其相应的值。

为实现这一目标,我已在代码中为WiFi创建了broadCastReceiver,我在WiFi中注册了此broadCastReceiver,并在{注销}中取消注册{1}}。

会发生什么,

Case_1

如果最初onStart()打开并运行应用程序,那么每件事都很好,应用程序会显示如下onStop()中的内容。但是,在此状态下,如果我按下WiFi pic_0并再次按下disconnect,则应用程序会显示如下toggle button中的内容,但不会显示资讯

Case_2

如果最初关闭reconnect并运行应用程序,那么我会收到pic_1中的内容,这是正常的,因为还没有连接。但是,在这种情况下,在按下WiFi pic_2之后,我会收到connect中的内容,并且有一个连接,但是,没有显示任何信息。

在此之上,当我运行应用程序并尝试手动连接到网络并返回应用程序时,它会崩溃并toggle buttonpic_3

Kinly请让我知道我错过了什么以及我做错了什么。

代码

logcat

}

Pic_0 enter image description here

PIC_1 enter image description here

PIC_2 enter image description here

Pic_3 enter image description here

1 个答案:

答案 0 :(得分:0)

我建议您阅读有关BroadcastReceiverWifiManager的文档,以正确理解它们的工作原理。我会做以下事情:

1.-创建一个IntentFilter并注册您想要监听的所有必要操作。(WifiManager.WIFI_STATE_CHANGED_ACTION,WifiManager.NETWORK_STATE_CHANGED_ACTION)

2.-创建单个广播接收器并在onreceive()方法中添加所有逻辑。

WIFI_STATE_CHANGED,NETWORK_STATE_CHANGED和他们收到的所有parcelables的组合应该足以实现您的目标。