【发布时间】:2015-04-17 21:16:58
【问题描述】:
我目前正在尝试在 Android 中做一个相对简单的任务。
我想检测无线网络何时完全连接。此时我不在乎是否有互联网连接,我只想知道我的设备被认为连接到网络的确切时刻。
我将尝试描述我做了什么,以及我失败的悲惨遭遇。
请记住,我已尝试过官方建议以及此处的一些答案,但无济于事。
活动注册接收者:
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
registerReceiver(ReceiverClass,intentFilter);
在我的接收器中,我尝试了来自this 答案的东西
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if(info != null) {
if(info.isConnected()) {
// Do your work
Log.d("tag", "connected");
}
}
但我的应用没有按预期运行。当我杀死 Wifi(从顶部滑动并关闭它)时,我收到了一个广播(显然),但是我的两个 If 都进入了低谷,我得到了这个记录! 打开wifi后,我又得到了2个日志,表明一切都已连接。我尝试过这样的一两件事
WifiInfo wi = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
if(wi != null) {
SupplicantState ss = wi.getSupplicantState();
Log.d("I am desperate", ss.equals(SupplicantState.COMPLETED));
}
}
但同样的事情也会发生。我得到了真实的3次。
我不是 android 专家,我相信我遗漏了一些非常明显的东西。对我有帮助吗?
更新
我更倾向于考虑这可能是 Android 系统中的一个问题。目前我停止尝试从 Intent 获取信息。
我曾尝试使用EXTRA_WIFI_STATE,但命令:
Log.d("WifiState" getIntExtra(WifiManager.EXTRA_WIFI_STATE, -9000));
记录我收到的每个广播的默认值 (-9000)。
如果我尝试 SUPPLICANT_CONNECTION_CHANGE_ACTION 广播 - 那甚至永远不会被抓住。在这里我真的很纳闷……
【问题讨论】:
-
未连接时是否记录
connected? -
好吧,我关闭 WiFi 并连接广播接收器日志
标签: android broadcastreceiver android-wireless