执行需要粗略位置许可的网络扫描

Performing network scan requiring permission for coarse location

我正在开发一个应用程序,它可以进行网络扫描并将所有找到的 SSID 放入微调器中。

Android Studio 警告您需要 CHANGE_WIFI_STATE 的许可。将此添加到清单后,Android Studio 不会通过 WifiManager.getScanResults() returns 0 网络发出任何警告。我发现 ACCESS_COARSE_LOCATION 需要 add/request 许可。

我只需要网络 SSID,我不在乎用户位于何处,所以为什么 I/the 用户需要允许位置权限只是为了获取可用网络列表。以下是我目前进行扫描的方式:

    activity.registerReceiver(mWifiScannerReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
            wifiManager = (WifiManager)activity.getSystemService(Context.WIFI_SERVICE);

            wifiManager.startScan();

And my receiver:

if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION))
            {
                List<ScanResult> scanResults = wifiManager.getScanResults();
                wifiNetworkList.clear();
                //List<String> ssids = new ArrayList<>();
                for (int i = 0; i < scanResults.size(); i++)
                {
                    wifiNetworkList.add(scanResults.get(i).SSID);
                    //ssids.add(scanResults.get(i).SSID);
                }
                //wifiNetworkList = ssids;
                wifiAdapter.notifyDataSetChanged();
            }

I don't care where the user is located

是的,但是给定网络 SSID,如果 WiFi 网络的位置已知,您可以找出用户所在的位置。

why do I/the user need to allow the location permission just to get a list of available networks

为了改善用户隐私,as of Android 6.0