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

标签 android android-wifi android-permissions

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

Android Studio 警告您需要CHANGE_WIFI_STATE 的权限。将此添加到 list 后,Android Studio 不会通过 WifiManager.getScanResults() 返回 0 个网络发出任何警告。我发现我需要为 ACCESS_COARSE_LOCATION 添加/请求权限。

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

    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 .

关于android - 执行需要粗略位置许可的网络扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36344239/

相关文章:

android - 如何只允许我的伴侣 watch 应用程序连接到手持设备上的可穿戴监听器服务?

Android N 中使用 jsoup 下载数据时出现 java.lang.VerifyError

android - 如何更改 PhoneGap 的屏幕大小?

android - 没有 "Apps using Usage Data"或 android.settings.USAGE_ACCESS_SETTINGS Intent 的设备

Android 2.2 与更高版本不处理连接管理器相同

android - Android 10.0如何获取WIFI SSID?

android - 打开失败: EACCES (Permission denied) api23?

android - 在某些 Android 设备上握手失败

android - 媒体播放器 : Couldn't open file on client side; Error(-38, 0) 等等

Android:在 Android Marshmallow (6.0) 上以编程方式打开/关闭 WiFi 热点