Android 银联Web支付 中英文显示BUG

近日遇到一个银联web支付的坑,特此记录一下。

问题描述

由于某些国产手机rom系统问题,即使系统语言环境为简体中文,但Locale默认还是英文。

#获取本地默认Locale
Locale.getDefault().toString()
#输出结果为 en_US
问题分析

因为网页加载过程中会默认取本地的Locale数据,虽然系统页面为简体中文,但通过Locale取出的数据还是en_US。从而导致,相关进行了i18n处理的网页在中文环境下加载出英文页面。例如加载银联支付网页时,银联会获取本地的语言环境并设置到请求头 “Accept-Language” 中。

问题解决

在使用WebView控件的Activity中加入如下设置:

protected void onCreate(Bundle savedInstanceState) {
    initLocale();
    ....
}

private void initLocale(){
    Locale locale = new Locale("zh", "CN");
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, null);
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容