我正在构建一个 Cordova 应用程序,该应用程序需要在 Android 上访问 WiFi 并禁用当前连接的网络,以防止自动断开与我正在连接的网络的连接(因为没有互联网)。
问题是,在 Android Oreo 8.0+ 上进行测试时,我遇到了这个错误,adb logcat
我不知道我需要做什么来解决这个问题:
E/WifiConfigManager: UID 10315 does not have permission to update configuration "Test SSID"WPA_PSK
E/WifiStateMachine: Failed to disable network
这些是清单中列出的权限:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_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.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.OVERRIDE_WIFI_CONFIG" />
<uses-permission android:name="android.permission.INTERNET" />
我在这篇文章中找到的OVERRIDE_WIFI_CONFIG
烫发,但这似乎对我的具体情况没有帮助:更改 Android 热点设置
我在这个文件中发现了这个特定的错误: https ://android.googlesource.com/platform/frameworks/opt/net/wifi/+/master/service/java/com/android/server/wifi/WifiConfigManager.java# 984
canModifyNetwork
我在这里找到了
哪些调用: https ://android.googlesource.com/platform/frameworks/opt/net/wifi/+/master/service/java/com/android/server/wifi/WifiConfigManager.java#651
任何对 Android 更有经验的人可以帮助我解决这个问题,以及需要做什么才能让我的应用禁用网络?
这是否意味着如果不是由应用程序创建的网络,则不允许应用程序禁用网络?请帮助我不知道从哪里开始!
我也确实找到了这篇文章,它引用了 6.0,但是我们基本上完全无法禁用我们没有创建的网络,这是真的吗?如果该 SSID 已有另一个 WifiConfiguration,则 Android 6.0 无法添加 WifiConfiguration