在我的应用程序中,每当设备连接或断开 WIFI 网络时我都必须收到通知。为此我必须使用BroadcastReceiver
但是在阅读了关于 SO 的不同文章和问题后,我有点困惑我应该为此使用哪种广播操作。在我看来,我有三个选择:
- SUPPLICANT_CONNECTION_CHANGE_ACTION https://developer.android.com/reference/android/net/wifi/WifiManager.html#SUPPLICANT_CONNECTION_CHANGE_ACTION
- NETWORK_STATE_CHANGED_ACTION https://developer.android.com/reference/android/net/wifi/WifiManager.html#NETWORK_STATE_CHANGED_ACTION
- 连接性_操作 https://developer.android.com/reference/android/net/ConnectivityManager.html#CONNECTIVITY_ACTION
为了减少资源,我真的只想在设备启动时收到通知CONNECTED
到 WIFI 网络(并且已接收到 IP 地址)或当设备已DISCONNECTED
从一。我不关心其他州,比如CONNECTING
etc.
那么您认为我应该为此使用的最佳广播操作是什么?我是否必须手动过滤事件(因为我收到的事件超过CONNECTED
and DISCONNECTED
) in onReceive
?
EDIT:正如我在下面的评论中指出的,我认为SUPPLICANT_CONNECTION_CHANGE_ACTION
对我来说是最好的选择,但我的应用程序从未解雇或收到它。Others https://stackoverflow.com/questions/34803067/supplicant-connection-change-action-never-received该广播也有同样的问题,但从未提出真正的解决方案(实际上使用了其他广播)。有什么想法吗?
你可以去WifiManager.NETWORK_STATE_CHANGED_ACTION 有效。 https://developer.android.com/reference/android/net/wifi/WifiManager.html#NETWORK_STATE_CHANGED_ACTION
注册接收者WifiManager.NETWORK_STATE_CHANGED_ACTION
行动,无论是在清单、片段还是活动中,都适合您。
覆盖接收器:
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if(action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
boolean connected = info.isConnected();
if (connected)
//call your method
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)