Страницы

Поиск по вопросам

среда, 26 февраля 2020 г.

WebView API 28 не работает

#java #android #webview


Есть WebView который подгружает локальный (хранящийся в память приложения) файл index.html

web.loadUrl("file://" + getApplicationContext().getFilesDir().getAbsolutePath() +
"/index.html");


внутри этого html подключается обычные js скрипты, которые тянут данные из интернета.

на API 26 все работает отлично.
НО!
когда я меняю targetSdkVersion на 28 ничего не происходит. данные из интернета просто
не подключаются.

в чем проблема?
    


Ответы

Ответ 1



Современный Android WebView как и многие другие VebWiew во всяких фреймворках вроде JavaFx или Qt используют в качестве движка chromium. Вот ссылки на официальную документацию, как можно удаленно при помощи десктопного хрома отлаживать такие штуковины :) https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews https://developers.google.com/web/tools/chrome-devtools/remote-debugging/ PS: уж простите но я не стал это переводить и писать в тексте сообщения. В двух словах - надо включить RemoteDebugging в десктопном хроме, USB отладку на андроиде и соединить устройства кабелем. После этого в десктопном хроме можно будет увидеть в отладчике то, что происходит на девайсе.

Ответ 2



Огромное спасибо Stranger in the Q за помощь и вот, что нашлось: https://developers.google.com/web/tools/chrome-devtools/remote-debugging/webviews с помощью этого метода я выяснил что у меня в WebView вылетает ошибка Failed to load resource: net::ERR_CLEARTEXT_NOT_PERMITTED а она в свою очередь решается через AndroidManifest.xml добавлением строки: Погуглив я нашел следующую информацию (поправьте меня, если я понял что-то не так!): В Android 8 и выше эту функцию отключили (т.е. раньше она всегда была true, а теперь по умолчанию false) Эта функция отвечает за подключение к HTTP ресурсам. Значит, чтобы получать данные или просто отобразить сайт в WebView надо просто прописать это в Манифесте. (странно, что это не permission) для HTTPS сайтов этого не требуется. все верно?

Комментариев нет:

Отправить комментарий