android - 在 Android 中获取没有位置服务的可用 WiFi 网络列表

标签 android broadcastreceiver android-wifi wifimanager

编辑: 我知道如果定位服务关闭,SCAN_RESULTS_AVAILABLE_ACTION 会返回大小为“0”的列表。问题是如何在没有定位服务的情况下做到这一点。

上一个: 我需要手机所有可用 WiFi 网络的列表,并使用该列表在我的应用程序中填充 ListView。我稍后会从我的应用程序连接到所需的网络。

我已经通过使用 , 实现了上述目标

 wifiManager.startScan();

我已经注册了一个 BroadcastReciever,用于在扫描完成时接收通知,如下所示,

registerReceiver(wifiReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

接收代码如下,

 class WifiReceiver extends BroadcastReceiver {

        // This method call when number of wifiManager connections changed
        public void onReceive(Context c, Intent intent) {
            wifiResults.clear();
            wifiList = wifiManager.getScanResults();
            for(int i = 0; i < wifiList.size(); i++){
                if(!wifiList.get(i).SSID.equals(""))
                wifiResults.add(wifiList.get(i).SSID+" signal:"+wifiList.get(i).level);
            }
            adapter.notifyDataSetChanged();
            wifiRefreshLayout.setRefreshing(false);

        }
    }

问题是我每次需要上述信息时都必须启用定位服务。我真的不明白这里的意义,因为我不需要定位服务,因为“SHAREit”等其他应用程序也这样做无需定位服务。是否有更好的方法来实现这一点?

最佳答案

我们可以通过将应用的 targetSDKversion 设置为 21 或更低来获取可用的 WIFI 列表,而无需打开 GPS

关于android - 在 Android 中获取没有位置服务的可用 WiFi 网络列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44945405/

相关文章:

java - 在 Android 中设置 jpeg 文件的 DPI 元信息

android widget 提示解锁

Android - 如何使用本地广播接收器?

Android Q,以编程方式连接到不同的 WiFi AP 以上网

android - 等待 Android 动画完成

android - 调试 FFmpeg

android - 如何检测android耳机按钮点击4.0及更高版本

android - WifiManager.getScanResults() - 说明(自动扫描、 sleep 等)

android - 如何获取所有已连接网络的 BSSID?

android - 更新到 Android Studio 北极狐,现在我被 "Execution failed for task ' :app:kaptDebugKotlin'"卡住了