我已在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)
...
答案 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);