我有一个带有嵌入式 WebView 的 Android 应用程序。我需要为通过此 WebView 呈现的网页应用自定义语言设置。我找到了这个相关的答案并试了一下。
具体来说,代码是:
Map<String, String> headers = new HashMap<String, String>();
String lang = Locale.getDefault().getLanguage(); // for example, returns "ru"
headers.put("Accept-Language", lang); // also tried "ru", "ru_RU", "ru;q=0.8,en;q=0.6", etc.
mWebView.loadUrl("http://localhost/", headers);
没有任何效果。在服务器端,我总是得到带有“en_us”的标题。
根据Android文档:
additionalHttpHeaders - 用于此 URL 的 HTTP 请求的附加标头,指定为从名称到值的映射。请注意,如果此映射包含此 WebView 默认设置的任何标头,例如控制缓存、接受类型或 User-Agent 的标头,则它们的值可能会被此 WebView 的默认值覆盖。
有问题的部分以粗体突出显示。
所以问题是 - 如何覆盖 WebView 的默认值以满足首选用户语言?
目前这个问题发生在 Android 2.3 中,我还没有在其他版本上检查它。