我有一個BroadcastReceiver訂閱清單中的android.net.wifi.STATE_CHANGE
事件。爲什麼這個WifiInfo有時在Android上無效?
在我的廣播接收器中,我想提取我連接的網絡的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),其中從intent檢索的wifiInfo對象總是null
。
這意味着我的接收器無法繼續執行,因此它記錄下這個事實,然後每次都退出。
我有點不知所措,因爲我明確檢查手機連接到網絡。誰能提供任何見解?
難道我的回答解決問題了嗎? – 2013-10-20 21:13:39