android - 基于语言在 webview 中加载本地 HTML 文件,如果找不到文件则使用默认值

标签 android localization android-webview

我正在创建一个 webview,它将根据在应用程序上选择的语言加载本地 html 文件。我创建它的方法是创建几个具有不同语言代码“en、ms、cn、fr 等...”的文件夹,然后根据 getlanguage 更改 url base。 binding.wvAboutUs.loadUrl("file:///android_asset/htmls/"+ language + "/About_Us.html"); 结果,如果 getLanguage = en,则 url 将是 "file :///android_asset/htmls/en/About_Us.html”,目前对我有用。

但是,在某些情况下,某些语言可能无法使用 htmls 文件(而且我不想将“默认”文件放入该语言文件夹)。

我可以执行检查的任何想法 - 如果 url 为空,则加载默认文件。在加载默认页面之前,应该检查其他语言的文件是否存在,以防不存在(en html 文件)。

例如 file:///android_asset/htmls/fr/About_Us.html 找不到文件然后加载默认文件:///android_asset/htmls/en/About_Us.html。

最佳答案

您可以执行以下操作以使其正常工作

AssetManager mg = getResources().getAssets();
InputStream is = null;
try {
  is = mg.open("htmls/fr/About_Us.html");
  //File exists so do something with it
 binding.wvAboutUs.loadUrl("file:///android_asset/htmls/fr/About_Us.html");
} catch (IOException ex) {
  //file does not exist
  binding.wvAboutUs.loadUrl("file:///android_asset/htmls/en/About_Us.html");
} finally {
 //must close the stream
  if (is != null) {
    is.close();
  }

}

关于android - 基于语言在 webview 中加载本地 HTML 文件,如果找不到文件则使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50055182/

相关文章:

android-webview - Chrome Inspector 在 AVD 中显示 Android Webview 但不在实际设备上

android - 如何通过 Intent 将电话号码添加到现有联系人?

java - Ant 找不到 javac,在 Ubuntu 上不会设置 JAVA_HOME

java - 我可以使用什么来检索用户在我的应用程序中的图像上标记的区域?

winforms - SSRS ReportViewer 中的日期时间格式始终使用 en-US?

haskell - 在 Haskell 平台中进行区域设置的首选方法

Android 的 addJavascriptInterface 在 iOS 中的等价物

android - android studio 数据库中的图像插入

swift - 如何在 swift 2.3 中使用#undef 指令

javascript - 有没有办法使用 WebView 将 JavaScript 中的对象(类实例)提取到 Android?