模拟器上的ACCESS_WIFI_STATE错误

时间:2017-01-03 09:41:11

标签: android android-permissions

我已在manifest声明了以下权限:

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

根据docs,它是正常权限,因此无需在运行Android M或更高版本的设备上在运行时请求它。

该应用程序已崩溃,但我已在多台设备上测试(使用Android N)并且应用程序已预期。知道为什么它在运行Android 7.0的x86构建的Android SDK模拟器上崩溃了吗?

这是stacktrace:

Fatal Exception: java.lang.SecurityException: WifiService: Neither user 10076 nor current process has android.permission.ACCESS_WIFI_STATE.
       at android.os.Parcel.readException(Parcel.java:1683)
       at android.os.Parcel.readException(Parcel.java:1636)
       at android.net.wifi.IWifiManager$Stub$Proxy.getWifiEnabledState(IWifiManager.java:1198)
       at android.net.wifi.WifiManager.getWifiState(WifiManager.java:1455)
       at android.net.wifi.WifiManager.isWifiEnabled(WifiManager.java:1467)
...

2 个答案:

答案 0 :(得分:0)

要在从Android 6.0扫描Connections时使用WifiManager,它需要访问您的位置,因此这是精确位置或粗略位置,将以下内容添加到Manifes.xml

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

答案 1 :(得分:0)

由于Android M(6+),您必须在运行时询问用户权限,例如iOS应用程序。

您可以阅读文档here,快速解决方案是使用库,例如​​EasyPermission或EasyPermission

https://github.com/jineshfrancs/EasyPermission

https://github.com/lalosoft/EasyPermissions

用法:

  easyPermission.requestPermission(this, Manifest.permission.ACCESS_WIFI_STATE);