Android Oreo 8.0+ Отключить проблемы с сетевыми разрешениями

Я создаю приложение Cordova, которому необходимо получить доступ к WiFi на Android и отключить текущую подключенную сеть, чтобы предотвратить автоматическое отключение от сети, к которой я подключаюсь (поскольку нет Интернета).

Проблема в том, что при тестировании на 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, которую я нашел в этом посте, но, похоже, не помогает в моей конкретной ситуации: настройки точки доступа

Я обнаружил эту конкретную ошибку в этом файле: 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 Невозможно добавить WifiConfiguration, если есть уже другая конфигурация Wifi для этого SSID


person sMyles    schedule 17.01.2018    source источник
comment
Действительно? Кто-то отрицает это, но не пытается прокомментировать или указать, почему? Действительно полезно...   -  person sMyles    schedule 25.01.2018


Ответы (1)


Я не могу ответить на ваш вопрос как таковой, но я могу ответить на этот

Означает ли это, что приложениям не разрешено отключать сеть, если она не была создана приложением?

Это верно, как согласно документации метод отключить сеть:

Отключите настроенную сеть. Указанная сеть не будет кандидатом на ассоциирование. Это может привести к асинхронной доставке событий изменения состояния. Приложениям не разрешается отключать сети, созданные другими приложениями.

Поэтому, если пользователь уже подключился к этой сети с помощью системы Android, в Oreo вы не сможете отключить сеть. Хотя метод disableNetwork возвращает true или false в случае успеха или неудачи

person Omar Hezi    schedule 01.02.2018