1、问题原因:

在Android7(N)之前WebView的渲染是通过Android System webView来实现的。但是在Android7(N)之后WebView会被作为一个应用程序的方式服务于各个三方APP。由于WebView这里是作为一个单独的应用程序,所以他不会被绑定到你自己APP设置的Local上。不仅如此,WebView还会把语言变成设备的Local设置。然后相应的资源文件也会被变成设备语言下的资源文件。这样就导致了只要打开了含有WebView的页面,应用内语言设置就失效的问题。

2、解决方案:

(1)第1步,在所有Activity下重设语言。StackOverFlow的回答中说也可以只在含有WebView的Activity中重设。但是各位,为了保证不给自己挖坑,还是全设置掉好一点。在你的BaseActivity中,并且在调用setContentView之前调用如下代码设置你的Local:

public static void setLocale(Locale locale){
        Locale.setDefault(locale);
        Context context = MusafirApplication.getInstance();
        final Resources resources = context.getResources();
        final Configuration config = resources.getConfiguration();
        config.setLocale(locale);
        context.getResources().updateConfiguration(config,
                resources.getDisplayMetrics());
    }

(2)第2步:在你的Application的onCreate方法中以及用户可能正在改变语言的地方添加如下代码():

new WebView(this).destroy();

这样之后,问题解决。

(3)修改语言的代码(在BaseActivity中调用该方法)

public static void switchLanguage( String language) {//设置应用语言类型Resources resources = MyApplication.getContext().getResources();Configuration config = resources.getConfiguration();DisplayMetrics dm = resources.getDisplayMetrics();/*** 适配Android7.0以上系统*/if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){if ("zh".equals(language)) {config.setLocale(Locale.SIMPLIFIED_CHINESE);} else if ("ja".equals(language)){config.setLocale(Locale.JAPANESE);} else {config.setLocale(Locale.ENGLISH);}}else {if ("zh".equals(language)) {config.locale = Locale.SIMPLIFIED_CHINESE;} else if ("ja".equals(language)){config.locale = Locale.JAPANESE;} else {config.locale = Locale.ENGLISH;}}resources.updateConfiguration(config, dm);//保存设置语言的类型LocalData.getInstance().setLanguage(language);
}

Android7(N)中webview导致应用内语言切换失效相关推荐

  1. Android 实现应用内语言切换(包括不重启应用方式)

    一.前言 对于一个移动应用,可能不仅仅是面向一个国家的用户,所以多语言国际化是移动应用开发中比较常见的一个功能:正常实现多语言国际化,我们只需要在资源目录下res/下创建需要支持的国家values目录 ...

  2. android多语言切换失效

    最近一个项目中用到了多语言,可是在有些语言切换失效,挣扎许久终于找到问题了. 这是切换语言的代码: public void changeAppLanguage(String key) {Configu ...

  3. iOS App内语言切换(国际化)

    想要实现App内的语言切换功能,那么首先要创建国际化语言文件,用于存储对应语言显示的文本. 1.创建国际化语言文件 command+N,选择Other里面的Empty文件. 我们将其命名为Locali ...

  4. Android实现应用内语言切换,android 应用内切换 多国语言

    微信中可以动态设置,apk的语言版本,最近尝试实现了这个功能. 我们知道,android本身就支持多国语言版本的. 不过这个语言的切换 依赖于系统的的语言设置,见图 也依赖apk本身values多国语 ...

  5. iOS 程序内语言切换 -- 中英文切换

    随着时代的发展,应用程序相继出现了不同语言的版本方案,中文,英文,法文,韩文等等:想在应用程序中实现语言的自由切换,需要配置多个语言的文件,根据用户的动态选择获取不同语言文件下的语言文件,从而显示到界 ...

  6. iOS中代码支持多国语言切换的实现(Xcode5+iOS7)

    时间2014-03-08 22:14:13 CSDN博客 原文  http://blog.csdn.net/gisxy/article/details/20577881 为了增加程序的用户使用数量,那 ...

  7. iOS国际化APP内语言切换

    开发java的时候要求实现语言国际化,在java中用了i18来进行处理,移动端也可以进行处理: 方法可以有以下两种: 方案一:在原国际化版本的基础上做修改,在info.plist文件中新增key=&q ...

  8. 根据地理位置多语言切换(1)- 获取地理位置信息

    在手机应用的实现中经常会遇到需要语言切换用于满足用户环境的多样性.可以根据所处地理位置信息进行经纬度及国家/城市/地区的获取,可以根据此内容进行多语言情况的推荐及切换. 完成上述的想法需要进行几个功能 ...

  9. android 错误中英互译,Android 中英文切换及遇到的问题

    Android 中英文切换及遇到的问题 背景:近期由于项目上的需求接受到了一个中英文切换需求.只需要在切换中英系统语言的时候改变app的名称为中文或英文就可以.关于如何实现这些可以参考如下文章: 实现 ...

  10. android 语言切换过程分析

    最近在看一个bug,系统切换语言后,本来退到后台的音乐,会在通知栏上显示通知.为了解决这个bug,我学习了下android的语言切换流程,也参考了大量其他人的资料.(主要参考了http://blog. ...

最新文章

  1. Java线上应用故障排查之一:高CPU占用
  2. 8.8-8.10 usaco
  3. 安卓逆向_8 --- Android 调试工具 DDMS 和 Monitor ( 去掉 车来了 app 的广告 )
  4. 这九张动态图诠释什么是自然与科技的完美结合
  5. 【项目管理】管理良好沟通
  6. 局域网聊天2011记住
  7. 实习成长之路:MySQL九:为什么MySQL有时候会选错索引呢?
  8. Java实现八大排序算法
  9. 生命计算机在线,抖音死亡计算器寿命计算器在线测试入口 使用生命年龄计算器...
  10. Ubuntu 14.04 LTS 启动blast2go 报错
  11. LRC歌词文件读取代码
  12. 示波器的带宽与采样率是什么关系
  13. 大数据时代 无处安放的隐私数据
  14. -XX:+UseParallelGC 和 -XX:+UseParNewGC 的区别
  15. cocos2dx显示html,cocos2dx-js 初探 整体流程helloworld.html分析(示例代码)
  16. raid卷的作用_Raid卷详解
  17. 李白《月下独酌-花间一壶酒》的UML建模
  18. 【改进粒子群优化算法】相量普氏群优化(PPSO)算法(matlab代码实现)
  19. 香农的“创意思维在编程的应用
  20. 使用c语言求一元二次方程的根

热门文章

  1. Golang 企业级web后端框架
  2. 十大著名黑客-----李纳斯-托瓦兹
  3. 阿里云服务器怎么开发票?
  4. 一款兼容Arduino的模拟TDS传感器
  5. SICP习题2.6 题目理解
  6. 百度 LBS 开放平台,开发者众测计划正式启动
  7. 计算机与神经网络,通过计算机与神经网络分析太阳系的历史
  8. vue中基础理论知识
  9. 使用regexp_extract、regexp_replace函数过滤特殊字符时,不同的执行情境下(hive -e;hive -f),正则表达式的内容有变化
  10. 【格式化文档】ISO27001控制措施+ISO27002实施指南 【上】