android编程语言要变吗,在Android中以编程方式更改应用语言

我一直在寻找一种以编程方式更改系统语言的方法。虽然我完全理解正常的应用程序永远不应该这样做,而是:用户应该(通过意图)指向系统设置以手动更改它

应用程序应该自己处理它的本地化,就像Alex的答案中所描述的那样

有必要真正地改变系统的语言。

这是未记录的API,因此不应用于市场/最终用户应用程序!

无论如何,我找到了解决方案:Locale locale = new Locale(targetLocaleAsString);

Class amnClass = Class.forName("android.app.ActivityManagerNative");

Object amn = null;

Configuration config = null;

// amn = ActivityManagerNative.getDefault();

Method methodGetDefault = amnClass.getMethod("getDefault");

methodGetDefault.setAccessible(true);

amn = methodGetDefault.invoke(amnClass);

// config = amn.getConfiguration();

Method methodGetConfiguration = amnClass.getMethod("getConfiguration");

methodGetConfiguration.setAccessible(true);

config = (Configuration) methodGetConfiguration.invoke(amn);

// config.userSetLocale = true;

Class configClass = config.getClass();

Field f = configClass.getField("userSetLocale");

f.setBoolean(config, true);

// set the locale to the new value

config.locale = locale;

// amn.updateConfiguration(config);

Method methodUpdateConfiguration = amnClass.getMethod("updateConfiguration", Configuration.class);

methodUpdateConfiguration.setAccessible(true);

methodUpdateConfiguration.invoke(amn, config);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值