2017-06-29 36 views
-1

我编写了一个应用程序,可以检测到无线网络,当我在网络上按下时,它会提供有关该网络的详细信息。现在的问题是,我3年前编写它时,Android KitKat不需要用户的弹出权限,现在当我在Android N上运行它时,我按下扫描它既不扫描也不给我弹出权限。旧应用程序无法在Android N上获得WiFi扫描结果

我没有编程android很长一段时间,我不知道Android应用程序编码要求的变化。任何想法为什么发生这种情况

由应用程序使用当前的权限:

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
+0

问题是? – Selvin

+0

为什么它不扫描也不给我弹出权限 –

+0

没有[mcve],任何人都很难帮助你。 – CommonsWare

回答

2

为了得到棉花糖无线扫描结果后来,your app will need to request the ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission和定位模式设置必须启用为好。

documentation for getScanResults()

的接入点在最近一次扫描中列表。一个应用程序必须 为了 保持ACCESS_COARSE_LOCATION或ACCESS_FINE_LOCATION权限得到有效的结果

这一修改主要是由于该位置可以从无线扫描结果来确定的事实。

作为一种额外的安全措施,应用程序现在需要请求位置权限才能查看WiFi扫描结果,此外,如果用户将其位置模式设置为关闭状态,则在后台运行时,应用程序无法看到扫描结果。

因此,在最低限度,在ACCESS_COARSE_LOCATION允许添加到您的清单,以获得无线扫描结果:

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

如果你把你的目标API版本比23低,你不能要求权限在运行时。在这种情况下,您的应用将在安装时继续请求所有权限。

如果您更新应用程序以定位API版本23或更高版本,则需要在运行时请求所有危险的权限。有关在运行时请求位置权限的示例,请参阅here

+0

感谢man it it解决了我的问题 –