我想在手机连接到某个WiFi网络时执行某些操作。 据我所知,我有2个广播意图拦截,将满足这个: 1. Wifi状态改变了。 2.连接性改变。
然而问题是我只想拦截Wifi连接事件。 目前我的接收器是在WiFi的任何变化时触发的,包括断开连接,我并不在乎。我觉得这是浪费CPU时间。
还有更具体的意图,比如“Wifi Connected”吗? 或者,我可以在意图过滤器中添加一些内容来实现这一目标吗?
谢谢!
答案 0 :(得分:1)
您可以通过请求其额外信息来确定网络事件的类型。首先,请确保您在IntentFilter
操作中注册WifiManager.NETWORK_STATE_CHANGED_ACTION
并将其绑定到正确的BroadcastReceiver
。
然后在接收者的onReceive
方法中,您可以检查收到的事件是否为NetworkInfo.State.CONNECTED
事件:
@Override
public void onReceive(Context context, Intent intent) {
NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (networkInfo != null
&& networkInfo.getState().equals(NetworkInfo.State.CONNECTED) ) {
// Do whatever you want
}
}
答案 1 :(得分:0)
据我所知,无法按状态(已连接/已断开连接)或按网络名称过滤意图WifiManager.NETWORK_STATE_CHANGED_ACTION
。
太糟糕了:(