【发布时间】:2017-11-22 08:21:09
【问题描述】:
在开发扫描 WiFi 的应用程序时,我发现如果我关闭手机上的定位服务,它就无法工作。我已经为该应用程序提供了所有必要的权限。 - ACCESS_NETWORK_STATE、ACCESS_WIFI_STATE、ACCESS_COARSE_LOCATION。
这是我的代码:
WifiManager manager= (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
manager.startScan();
在接收器中:
int found = manager.getScanResults().size();
这个问题回答了部分问题。 Wifi scan results broadcast receiver not working
我的问题是:
如果位置服务关闭,应用是否可以列出 Wifi 接入点?
如果绝对需要定位服务,有没有办法让应用在扫描 wifi 接入点时开启定位服务?
【问题讨论】:
-
Google 认为使用蓝牙或 Wifi 可以获取用户的位置,而他不希望您这样做。这就是为什么从 Android 6 开始,您必须请求位置权限才能扫描/连接到 WIFI,以明确说明您可能能够使用该服务获取用户的位置。此外,如果您请求位置权限,您不必打开位置服务来扫描 WIFI。
-
@VladMatvienko 当我关闭定位服务时,Wifi 接入点的计数为 0,当我打开它时,计数是实际的 Wifi 点数。我正在使用 Android 6.0
-
您在获取WIFI网络之前是否申请了位置权限?
-
是的。我有。好像是安卓的bug。 stackoverflow.com/questions/35361064/…
-
你确定你是在运行时请求的,而不仅仅是在清单中声明的吗?
标签: android android-wifi