#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 сайтов этого не требуется. все верно?
Комментариев нет:
Отправить комментарий