gpt4 book ai didi

android - 为什么这个 WifiInfo 有时在 android 上为 null?

转载 作者:搜寻专家 更新时间:2023-11-01 08:59:31 26 4
gpt4 key购买 nike

我有一个订阅 list 中的 android.net.wifi.STATE_CHANGE 事件的 BroadcastReceiver。

在我的广播接收器中,我想提取我连接的网络的 SSID,然后用它做一些事情。这是我的代码:

list :

<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
}
}

这在我的手机上运行良好(运行 4.2 的 galaxy nexus),但我在其他一些手机上看到了问题(一个运行 2.3.6,另一个运行 4.0.4),从 Intent 中检索到的 wifiInfo 对象总是

这意味着我的接收器无法继续执行,因此它会记录这个事实,然后每次都退出。

我有点不知道为什么会出现这种情况,因为我正在明确检查手机是否已连接到网络。谁能提供任何见解?

最佳答案

尝试使用

WifiInfo wifiInfo = wifiManager.getConnectionInfo();

代替

WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);

其中 wifiManager 是使用以下方法获得的 WifiManager 实例:

WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);

关于android - 为什么这个 WifiInfo 有时在 android 上为 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16285856/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com