0

当手机连接到某个 WiFi 网络时,我想执行一些操作。据我所见,我有 2 个要拦截的广播意图来满足这一点: 1. Wifi 状态已更改。2. 连通性改变。

然而问题是我只想拦截 Wifi Connected 事件。目前我的接收器会在 WiFi 发生任何变化时触发,包括断开连接,我并不真正关心。我觉得这是在浪费 CPU 时间。

有没有更具体的意图,比如“Wifi Connected”?或者,我可以在意图过滤器中添加一些东西来实现这一点吗?

谢谢!

4

2 回答 2

1

您可以通过请求他的额外信息来确定网络事件的类型。首先,确保您IntentFilterWifiManager.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
  }
}
于 2013-07-31T17:16:51.347 回答
0

据我所知,没有办法WifiManager.NETWORK_STATE_CHANGED_ACTION按状态(连接/断开)或网络名称过滤意图。

太糟糕了 :(

于 2014-05-24T21:27:08.507 回答