这是检测与WiFi网络连接的正确方法吗?
问题描述:
我正在做一个应用程序,需要对设备连接到WiFi网络时作出反应,我目前正在尝试使用BroadcastReceiver实现它来监视android.net.ConnectivityManager.CONNECTIVITY_ACTION - 这种方式是正确的,还是有一种更合适的方式?这是检测与WiFi网络连接的正确方法吗?
答
@Jase,您需要注册接收WifiManager.NETWORK_STATE_CHANGED_ACTION
。意图有一个额外的NetworkInfo
。检查它找到它的状态。如果状态为NetworkInfo.State.CONNECTED
,则表示您已连接到网络。
有关实现此目的的示例代码,请看here。
答
看看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