在我的一个应用程序中,我正在改变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状态的行引起的,即 wifiManager.setWifiEnabled(false);
为什么会发生这种情况?为什么它在几乎所有设备上都没有问题,但在这种特定情况下却崩溃了?这是Android版本还是设备相关的问题?我是否真的需要添加 android.permission.CHANGE_NETWORK_STATE
权限才能改变WiFi状态?