在仍然使用Android资源的情况下,是否可以通过编程方式更改应用程序的语言?
如果没有,是否可以以特定语言请求资源?
我想让用户改变应用程序的语言从应用程序。
我正在寻找一种以编程方式更改系统语言的方法。虽然我完全理解一个正常的应用程序不应该这样做,但是它也不应该这样做:
有必要通过编程来真正改变系统的语言。
这是无文档化的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);