在我的一个应用程序中,我正在更改 WiFi 状态。像这样:
wifiManager.setWifiEnabled(false);
我在清单中有这些权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
该代码在我的手机和大多数其他手机中运行良好。但是,今天我收到了带有以下错误的崩溃报告:
Caused by: java.lang.SecurityException: NetworkManagementService: Neither user 10147 nor current process has android.permission.CHANGE_NETWORK_STATE.
堆栈跟踪表明此错误是由我正在更改 WiFi 状态 unsig 的行引起的wifiManager.setWifiEnabled(false);
为什么会这样?为什么它在几乎所有设备上都没有问题,为什么在这种特殊情况下会崩溃?它是Android版本还是设备依赖?我真的需要添加权限android.permission.CHANGE_NETWORK_STATE
才能更改 WiFi 状态吗?