我有一个 BroadcastReceiver 订阅android.net.wifi.STATE_CHANGE
清单中的事件。
在我的广播接收器中,我想提取我连接到的网络的 SSID,然后对其进行处理。这是我的代码:
显现:
<receiver android:name=".ConnectionReceiver">
<intent-filter >
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
在我的连接接收器类中:
public void onReceive(Context context, Intent intent) {
NetworkInfo networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
Log.d("WFC", "CONNECTIVITY CHANGE: " + intent.getAction() + " state: " + networkInfo.getState().toString());
if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION) && networkInfo.getState() == NetworkInfo.State.CONNECTED) {
WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
if (wifiInfo == null) {
Log.w("WFC", "wifi info is null");
return;
}
String rawSSID = wifiInfo.getSSID();
// do stuff here
}
}
这在我的手机上运行良好(galaxy nexus 运行 4.2),但我在其他一些手机(一个运行 2.3.6,另一个运行 4.0.4)上看到了问题,其中从意图检索到的 wifiInfo 对象始终为null
.
这意味着我的接收器无法继续执行,因此它会记录这个事实,然后每次都退出。
我不知道为什么会出现这种情况,因为我正在明确检查手机是否已连接到网络。任何人都可以提供任何见解吗?