Android 为什么setWifiEnabled为更改\网络\状态权限引发SecurityException?

Android 为什么setWifiEnabled为更改\网络\状态权限引发SecurityException?,android,permissions,android-wifi,android-networking,android-permissions,Android,Permissions,Android Wifi,Android Networking,Android Permissions,在我的一个应用程序中,我正在更改WiFi状态。像这样: wifiManager.setWifiEnabled(false); 我在清单中拥有以下权限: <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permissi

在我的一个应用程序中,我正在更改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" />
堆栈跟踪表明此错误是由我正在更改WiFi状态的行unsig
wifiManager.setWifiEnabled(false)引起的


为什么会发生这种情况?为什么它在几乎所有的设备上都能正常工作?为什么在这种特殊情况下它会崩溃?它是Android版本还是依赖于设备?我真的需要添加android.permission.CHANGE\u NETWORK\u STATE
权限才能更改WiFi状态吗?

更改网络\u STATE的文档说
允许应用程序更改网络连接状态
,所以我想说,是的,您确实需要添加权限。在我看来,禁用wi-fi很有可能改变网络状态


至于为什么会在这种特殊情况下发生这种情况,很可能是因为它运行在您之前没有测试过的android版本上。

我同意,但奇怪的是,它在大多数设备上都能完美工作。我认为相同的权限应该赋予在任何设备上访问应用程序的相同权限。你知道哪个安卓版本需要此权限才能更改WiFi状态吗?
Caused by: java.lang.SecurityException: NetworkManagementService: Neither user 10147 nor current process has android.permission.CHANGE_NETWORK_STATE.