执行需要粗略定位权限的网络扫描

时间:2016-03-31 21:33:33

标签: android android-wifi android-permissions

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

Android Studio警告您需要CHANGE_WIFI_STATE的权限。将此添加到清单后,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();
            }

2 个答案:

答案 0 :(得分:3)

  

我不关心用户所在的位置

是的,但考虑到网络SSID,您可以了解用户所在的位置,是否知道该WiFi网络的位置。

  

为什么我/用户需要允许位置权限才能获得可用网络列表

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

答案 1 :(得分:1)

“是的,但是根据网络SSID,您可以找到用户所在的位置,如果已知该WiFi网络的位置。”

上述情况极不可能发生。更有可能的是,要求位置服务扫描WiFi,谷歌可以收集所有看到的WiFi网络的GPS坐标及其相对信号强度。允许创建这样的数据库。

这实际上不属于Google或任何人的业务,并且是一个巨大的隐私和安全问题。谷歌做了许多伟大而美好的事情,包括Android。但他们也可能有一个更黑暗的一面,并不关心后果。