简单讲一下需求来源。在app中显示一个最终用户许可协议(EULA)。这个许可协议是html格式的,存储在本地,而且是多语言的,也就是说:有多个html文件,文件名各不相同:
英文的是eula.htm,简体中文的是eula-zh-rCN.html。
这些文件都放在assets目录下。assets目录下的文件是一类特殊的资源,不会被编译和生成资源id。
在app中,用一个webview来装载许可协议文本,那么,问题演变为:根据不同的系统语言装载不同的eula文件,比如:英文系统时,在webview中显示eula.htm,简体中文时显示eula-zh-rCN.html。
webview装载一个本地assets目录下的文件的方法是这样的:
webView.loadUrl("file:///android_assets/file_name");
其实,不同系统语言下,只要装载不同的文件就行了(file_name不一样)。所以问题就解决了:把文件名作为String资源进行处理。具体的方法如下:
res/values目录下strings.xml文件加一行:
<string name="eula_file">eula.html</string>
res/values-zh-rCN目录(这个目录存储简体中文资源)下strings.xml文件加一行:
<string name="eula_file">eula-zh-rCN.html</string>
在webview中装载文件的代码是:
webView.loadUrl("file:///android_assets/"+getString(R.string.eula_file));
这样就行了,根据系统的语言显示不同的文件,如果没有对应的文件,则显示英文的。