我知道如何通过以下选项之一更改应用程序语言:
this.createConfigurationContext(configuration);
getResources().updateConfiguration(configuration, getResources().getDisplayMetrics());
getBaseContext().getResources().getConfiguration().setTo(configuration);
但这一切只影响活动或应用程序,而不影响整个系统。我需要按照它的方式更改区域设置,例如,MoreLocale 应用程序甚至可以设置不在设置中的语言列表中的语言。
不正常。没有公共 API 允许您执行此操作(以编程方式更改整个设备的系统语言),这通常并不奇怪,因为它与轴的一般概念相矛盾。
但是这里描述了不同的技巧
我不确定他们现在是否在工作,很可能漏洞已被修补。例如,相同的MoreLocale - 没有根或没有萨满舞者在我看来是行不通的。
经过一番挖掘,我发现了两种方法。
{"setprop persist.sys.language ru", "setprop persist.sys.country RU" "stop", "start"};但我不喜欢这种方法 - 有一个快速重启,在我的单核进程中会持续半分钟,并显示 Android 徽标。此处描述了这些方法。我采取了反射法。效果很好,立即,但前提是先发送到 adb
pm grant com.yourapp android.permission.CHANGE_CONFIGURATION。他在这里: