我真的不知道下面的代码中缺少了什么。我想要做的是,根据当前连接和network
当前状态显示一些WiFi
和WiFi
信息。例如,如果应用程序正在运行且用户决定关闭WiFi
,则应自动显示一些文本以显示当前BSSID=00.00.00.00
,speed= -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 button
说pic_3
Kinly请让我知道我错过了什么以及我做错了什么。
代码
logcat
}
Pic_0
PIC_1 :
PIC_2 :
Pic_3 :
答案 0 :(得分:0)
我建议您阅读有关BroadcastReceiver和WifiManager的文档,以正确理解它们的工作原理。我会做以下事情:
1.-创建一个IntentFilter并注册您想要监听的所有必要操作。(WifiManager.WIFI_STATE_CHANGED_ACTION,WifiManager.NETWORK_STATE_CHANGED_ACTION)
2.-创建单个广播接收器并在onreceive()方法中添加所有逻辑。
WIFI_STATE_CHANGED,NETWORK_STATE_CHANGED和他们收到的所有parcelables的组合应该足以实现您的目标。