我正在构建一个需要在Android上访问WiFi并禁用当前连接的网络的Cordova应用程序,以防止自动断开网络连接(因为没有互联网)
问题是,在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
烫发,但在我的具体情况下似乎没有帮助:Changing Android hotspot settings
我发现此文件中存在此特定错误: 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,但这是真的,我们基本上完全被排除在我们没有创建的禁用网络之外吗? Android 6.0 Cannot add WifiConfiguration if there is already another WifiConfiguration for that SSID
答案 0 :(得分:3)
我本身无法回答你的问题,但我可以回答这个问题
这是否意味着不允许应用禁用网络 该应用尚未创建?
这是正确的,因为根据方法disableNetwork的documentation:
禁用已配置的网络。指定的网络不是 关联的候选人。这可能导致异步 提供状态变化事件。不允许申请 禁用其他应用程序创建的网络。
因此,如果用户已使用Android系统连接到此网络,则在Oreo中您无法禁用网络。 虽然方法disableNetwork在成功或失败的情况下返回true或false