Android Oreo 8.0+禁用网络权限问题

时间:2018-01-17 18:49:50

标签: android cordova android-permissions android-8.0-oreo android-8.1-oreo

我正在构建一个需要在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

1 个答案:

答案 0 :(得分:3)

我本身无法回答你的问题,但我可以回答这个问题

  

这是否意味着不允许应用禁用网络   该应用尚未创建?

这是正确的,因为根据方法disableNetwork的documentation

  

禁用已配置的网络。指定的网络不是   关联的候选人。这可能导致异步   提供状态变化事件。不允许申请   禁用其他应用程序创建的网络。

因此,如果用户已使用Android系统连接到此网络,则在Oreo中您无法禁用网络。 虽然方法disableNetwork在成功或失败的情况下返回true或false