折腾了下下这个很2的问题。
网上放的方法比较旧, Android5.1的话, 设置后当时生效, 重启后就失效了。

        private void updateLanguage(Locale locale) {try {Object objIActMag, objActMagNative;Class clzIActMag = Class.forName("android.app.IActivityManager");Class clzActMagNative = Class.forName("android.app.ActivityManagerNative");Method mtdActMagNative$getDefault = clzActMagNative.getDeclaredMethod("getDefault");objIActMag = mtdActMagNative$getDefault.invoke(clzActMagNative);Method mtdIActMag$getConfiguration = clzIActMag.getDeclaredMethod("getConfiguration");Configuration config = (Configuration) mtdIActMag$getConfiguration.invoke(objIActMag);config.locale = locale;Class clzConfig = Class.forName("android.content.res.Configuration");java.lang.reflect.Field userSetLocale = clzConfig.getField("userSetLocale");userSetLocale.set(config, true);// 此处需要声明权限:android.permission.CHANGE_CONFIGURATION// 会重新调用 onCreate();Class[] clzParams = { Configuration.class };Method mtdIActMag$updateConfiguration = clzIActMag.getDeclaredMethod("updateConfiguration", clzParams);mtdIActMag$updateConfiguration.invoke(objIActMag, config);BackupManager.dataChanged("com.android.providers.settings");} catch (Exception e) {e.printStackTrace();}}

不同的地方在添加了

Class clzConfig = Class.forName("android.content.res.Configuration");
java.lang.reflect.Field userSetLocale = clzConfig.getField("userSetLocale");
userSetLocale.set(config, true);

Debug发现的逻辑是:
1: 持久化保存下来

SystemProperties.set("persist.sys.language", l.getLanguage());
SystemProperties.set("persist.sys.country", l.getCountry());

2: 开机AndroidRuntime读取这个属性, 更新系统之前的属性。

估计是为了方便跑测试的Case添加的这个逻辑。

Android 5.1 修改系统默认语言相关推荐

  1. ubuntu 修改系统默认语言为英文!

    ubuntu 修改系统默认语言为英文! 1.sudo vim /etc/default/locale 改为如下内容: LANG="en_US.UTF-8" LANGUAGE=&qu ...

  2. Debian修改系统默认语言

    系统版本:Debian 10.1.0x64 安装过程中选择了中文作为默认语言,即zh_CN_UTF-8,现将系统默认语言改为英文. 修改方法: 在Terminal中键入以下命令: sudo dpkg- ...

  3. Android 12.0 修改系统默认字体的大小

    目录 1.概述 2.修改系统默认字体的大小的核心类 3.修改系统默认字体的大小的核心功能实现和分析

  4. Android 12.0修改系统默认设备类型的平板电脑类型为设备类型

    1.概述 在12.0的系统rom产品开发中,对于产品设备类型都默认为tablet即平板电脑类型,即 product="tablet" 在一些不是平板的项目中,可能需要修改这个类型为 ...

  5. Android 11.0 修改系统默认设备类型的平板电脑类型为设备类型

    目录 1.概述 2.修改系统默认产品设备类型相关代码 3.修改系统默认产品设备类型相关代码的分析

  6. android8.1 修改系统默认语言为中文

    1,android 系统的默认语言配置文件路径如下: build/make/target/product/full_base.mk 在文件中找到变量 "PRODUCT_LOCALES&quo ...

  7. rk3399 Android7.1 修改系统时区、修改默认输入法、修改系统默认语言

    1.修改默认语言 进入源码目录,使用如下命令 root@ubuntu:/3399_backup/g3399-v7-1-2-20180529_backup# find . -name full_base ...

  8. centos linux 修改系统默认语言设置,centos怎么更改语言设置为中文

    centos怎么更改语言设置为中文,语言包,中文,简体中文,视频教程,就会 centos怎么更改语言设置为中文 易采站长站,站长之家为您整理了centos怎么更改语言设置为中文的相关内容. 查看系当前 ...

  9. Android系统之路(初识MTK) ------ 设置系统默认语言/客制化可选语言/设置默认时区

    在这一版本的平板系统定制中,客户需要定制系统默认语言,默认英语,可选语种分别是 语言代码      国家/地区 bn_BD      孟加拉语(孟加拉) en_US      英文  ar       ...

最新文章

  1. 疯狂的程序员-第五章
  2. Spring Boot-Profile
  3. 软件项目组织管理(九)项目人力资源管理
  4. 技术分享 | 基于EOS的Dapp开发
  5. 软工作业:(2)硬币游戏--代码分析与改进
  6. ospf配置方法及相关问题
  7. 最短路径算法—Dijkstra(迪杰斯特拉)算法分析与实现(C/C++)
  8. Spring的bean管理(xml方式)之Bean实例化的方式
  9. php制作相册mp4,相册视频制作软件免费版
  10. 弱电工程项目管理软件
  11. 【博客之星】总结和分享是一种习惯
  12. 谷歌人机图像识别接口
  13. 阿里云主机项目根目录指向public目录下
  14. 假如现在你有30分钟,你会做什么?
  15. 基于三层交换技术的校园网设计与实现
  16. Bert:Pre-training of Deep Bidirectional Transformers forLanguage Understanding
  17. 盛迈坤电商:店铺获得流量有哪些方法
  18. 《C语言程序设计》江宝钏主编-习题4-2-分段函数
  19. 【Linux服务器管理】1、用户与权限
  20. wireshark抓包测试:海康摄像机

热门文章

  1. jdk jre jvm三者之间的关系
  2. 接口文件也是.java结尾吗
  3. 002_FastDFS单机部署
  4. 012_原始值和引用值
  5. mysql 优化300例_MySQL配置文件my.cnf参数优化和中文详解
  6. html5媒体对象居中,媒体对象 - Media Objects
  7. JAVA中this用法小结
  8. Photoshop CC2018软件安装资料及教程
  9. 笔记本电脑触摸板怎么开_更多的笔记本电脑向你袭来!
  10. redis配置密码_Redis数据库概述