Я использую общее веб-представление для загрузки 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-адрес и проверяет индикатор параметра запроса языка.
в соответствии с этой информацией некоторый конкретный класс cssвводится в HTML, и отображается только нужный язык
функция JavaScript:
if(window.location.href.endsWith('pt'))
style.innerHTML = '.en { display: none; }';
else
style.innerHTML = '.pt { display: none; }';
однако это не работает на Android 16
оба справочных текстапоказывается ... в то время как другие JavaScript в том же HTML работают даже на Android 16