Я использую общий веб-просмотр для загрузки файлов HTML, чтобы отображать диалоговые окна справки в моем приложении для Android.
this.helpView = new WebView(this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
this.helpView.getSettings().setSafeBrowsingEnabled(false);
this.helpView.getSettings().setJavaScriptEnabled(true);
Использование довольно простое, когда я хочу показать любое диалоговое окно справки, загрузить любой из файлов html, включенных в папку с ресурсами, в helpView.
if (this.helpView.getParent() != null)
((ViewGroup) this.helpView.getParent()).removeView(this.helpView);
this.helpView.loadUrl(url);
где url - это что-то вроде: file:///android_asset/add_giveaway_help.htm? + Locale.getDefault().getLanguage()
Вот трюк: у меня есть только один html-файл для каждой ситуации справки, но каждый файл включает текст справки на нескольких языках. Каждый HTML-файл имеет функцию javascript, которая считывает собственный URL-адрес и проверяет индикатор параметра запроса языка. в соответствии с этой информацией в html вводится определенный класс css, и отображается только желаемый язык
функция javascript:
if (window.location.href.endsWith('pt'))
style.innerHTML = '.en { display: none; }';
else
style.innerHTML = '.pt { display: none; }';
однако это не работает на Android 16
отображаются оба справочных текста ... в то время как другие javascripts в том же html работают даже на android 16



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


htmlData = "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\" />" + htmlData;
// допустим, у нас есть файл /assets/style.css
webView.loadDataWithBaseURL("file:///android_asset/", htmlData, "text/html", "UTF-8", null);
@RafaelLima да
что такое данные html? вся html-страница?