您需要。
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED"/>
<action android:name="android.net.wifi.STATE_CHANGE"/>
</intent-filter>
在您的receiver
标签中。
或者,如果您想更加控制它,在注册BroadcastReceiver
之前设置这些内容:
final IntentFilter filters = new IntentFilter();
filters.addAction("android.net.wifi.WIFI_STATE_CHANGED");
filters.addAction("android.net.wifi.STATE_CHANGE");
super.registerReceiver(yourReceiver, filters);
WIFI_STATE_CHANGED
Broadcast <intent-action>
指示 Wi-Fi 已启用、禁用、正在启用、正在禁用或未知。一个额外的 int 类型的 extra 提供了此状态。如果可用,另一个额外的 extra 提供了先前的状态。
STATE_CHANGE
Broadcast <intent-action>
指示 Wi-Fi 连接状态已更改。一个额外的 extra 以 NetworkInfo 对象的形式提供新状态。如果新状态为 CONNECTED,则其他额外的 extra 可以提供访问点的 BSSID 和 WifiInfo 作为字符串。
同时,你需要在 manifest
标签内指定正确的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
您可以使用ConnectivityManager
来检查连接性,因为它会告诉您可用的连接类型。
ConnectivityManager conMngr = (ConnectivityManager)this.getSystemService(this.CONNECTIVITY_SERVICE)
android.net.NetworkInfo wifi = conMngr.getNetworkInfo(ConnectivityManager.TYPE_WIFI)
android.net.NetworkInfo mobile = conMngr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE)