2011-05-04 94 views
1

我正在做一个应用程序,需要对设备连接到WiFi网络时作出反应,我目前正在尝试使用BroadcastReceiver实现它来监视android.net.ConnectivityManager.CONNECTIVITY_ACTION - 这种方式是正确的,还是有一种更合适的方式?这是检测与WiFi网络连接的正确方法吗?

回答

1

@Jase,您需要注册接收WifiManager.NETWORK_STATE_CHANGED_ACTION。意图有一个额外的NetworkInfo。检查它找到它的状态。如果状态为NetworkInfo.State.CONNECTED,则表示您已连接到网络。

有关实现此目的的示例代码,请看here

0

看看WifiManager.WIFI_STATE_CHANGED_ACTION

广播意图的行动表明 是Wi-Fi已经被启用,禁用 启用,禁用,还是个未知数。一个 extra将此状态提供为int。 如果可用,另一个额外提供前一个 状态。

WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION

广播指示 ,为请求者 的连接已经建立(和现在 可以执行Wi-Fi业务) 或请求者的连接意图动作 已经丢失。一个额外的提供 连接状态作为布尔值,其中 真正意味着连接。

阅读从广播或你什么时候得到任何他们喜欢的检查:

WifiManager wifi=(WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
int state=wifi.getWifiState(); 

现在可以检查状态,这将是一个

  • WIFI_STATE_DISABLED
  • WIFI_STATE_DISABLING
  • WIFI_S TATE_ENABLED < - 有了这个,你可以发送/接收数据
  • WIFI_STATE_ENABLING
  • WIFI_STATE_UNKNOWN