Android 8/9出现SecurityException:无CHANGE_WIFI_STATE权限求助
问题描述
遇到如下错误:
Fatal Exception: java.lang.SecurityException: InforService: Neither user 10133 nor current process has android.permission.CHANGE_WIFI_STATE. at android.os.Parcel.createException(Parcel.java:1950) at android.os.Parcel.readException(Parcel.java:1918) at android.os.Parcel.readException(Parcel.java:1868) at android.net.wifi.InfoManager$Stub$Proxy.addOrUpdateNetwork(InfoManager.java:135) Caused by android.os.RemoteException: Remote stack trace: at android.app.ContextImpl.enforce(ContextImpl.java:1812) at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:1840)
manifest.xml已配置以下权限:
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
该错误仅发生在Android 8(API 26)和Android 9(API 28)系统上,如何解决?
解决方案
针对Android 8和9的权限与后台机制变化,按以下步骤处理:
清理重复权限声明:
manifest.xml中重复声明了CHANGE_WIFI_STATE,先删除重复项,避免系统解析异常,修正后的权限配置如下:<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>处理后台服务权限限制:Android 8开始对后台服务有严格管控,如果
InforService是后台服务,需改为前台服务(添加前台通知),或者确保调用Wi-Fi相关API时App处于前台状态。部分厂商在Android 8/9上会额外限制后台进程的权限生效,即使manifest声明了权限也可能失效。排查多进程隔离问题:如果App使用多进程,确认调用Wi-Fi API的进程与声明权限的进程一致。若
InforService运行在独立进程,可在<service>标签中添加android:permission="android.permission.CHANGE_WIFI_STATE",确保进程权限关联正常。添加权限检查与引导:部分厂商会将
CHANGE_WIFI_STATE纳入可手动关闭的权限列表,可在代码中添加检查逻辑,引导用户开启权限:if (ContextCompat.checkSelfPermission(this, Manifest.permission.CHANGE_WIFI_STATE) != PackageManager.PERMISSION_GRANTED) { Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); Uri uri = Uri.fromParts("package", getPackageName(), null); intent.setData(uri); startActivity(intent); }
内容的提问来源于stack exchange,提问作者Yakubu
相关产品推荐
相关产品推荐

