gpt4 book ai didi

Android 8.0 Oreo wifi 列表未获取

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:22:26 24 4
gpt4 key购买 nike

Android 8.0 上,无法使用 wifiManager 获取 wifi 列表,低于 API 级别 26 我正在获取列表。

此函数返回WifiManager对象

public static WifiManager getWifiManager(Context context) {
WifiManager wifiManager = null;
try {

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

} catch (NullPointerException e) {
e.printStackTrace();
}

return wifiManager;
}

此函数返回wifi列表

public static List<ScanResult> getWifiScanResults(Boolean sorted, Context context) {
WifiManager wifiManager = NetworkUtil.getWifiManager(context);
List<ScanResult> wifiList = wifiManager.getScanResults();

//Remove results with empty ssid
List<ScanResult> wifiListNew = new ArrayList<>();
for (ScanResult scanResult : wifiList) {
if (!scanResult.SSID.equals(""))
wifiListNew.add(scanResult);
}
wifiList.clear();
wifiList.addAll(wifiListNew);

return wifiList;
}

我已经注册了BroadcastReceiver

WiFiMainActivity.this.registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

这是 startScan() 方法

   public static void startScan(Context context) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
wifiManager.startScan();
}

拥有以下权限的用户

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

无法跟踪 android 8.0 Oreo 上的错误,我是否缺少任何其他权限。

最佳答案

自从 Android 8 引入了 background execution limitation大多数在 Manifest 中注册的 BroadcastReceiver 操作将不再发送或接收,除了 these ones .

是的,您正在通过您的Context 注册它,但也许您的代码有误。

您应该通过 Application Context 而不是 Activity Context 注册它以避免内存泄漏。另外,尝试创建一个 void IntentFilter 并在之后添加您的操作。此代码在我的应用程序中运行良好,targetSdkVersion 26+ in Android 8 Oreo (Nexus 5X)。

IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.wifi.SCAN_RESULTS");
context.registerReceiver(new YourBroadcastReceiver(), intentFilter);

希望这对您有所帮助。

关于Android 8.0 Oreo wifi 列表未获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49171173/

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