Class clazz = Class.forName("android.app.ActivityManagerNative");
Log.i("amnType", clazz.toString());
object1 = clazz.getMethod("getDefault", new Class[0]).invoke(clazz, new Object[0]);
Log.i("amType", object1.getClass().toString());
object2 = object1.getClass().getMethod("getConfiguration", new Class[0]).invoke(object1, new Object[0]);
Log.i("configType", object2.getClass().toString());
object2.getClass().getDeclaredField("locale").set(object2, Locale.CHINA);//重点是这里,设置语言
object2.getClass().getDeclaredField("userSetLocale").setBoolean(object2, true);
object1.getClass().getMethod("updateConfiguration", new Class[]{android.content.res.Configuration.class}).invoke(object1, new Object[]{object2});
BackupManager.dataChanged("com.android.providers.settings");
config.locale = new Locale.Builder().setLanguage("zh").setScript("Hans").setRegion("CN").build();绝对有效!!!!!!太难了我
这是我修改语言的方式:
Class clazz = Class.forName("android.app.ActivityManagerNative"); Log.i("amnType", clazz.toString()); object1 = clazz.getMethod("getDefault", new Class[0]).invoke(clazz, new Object[0]); Log.i("amType", object1.getClass().toString()); object2 = object1.getClass().getMethod("getConfiguration", new Class[0]).invoke(object1, new Object[0]); Log.i("configType", object2.getClass().toString()); object2.getClass().getDeclaredField("locale").set(object2, Locale.CHINA);//重点是这里,设置语言 object2.getClass().getDeclaredField("userSetLocale").setBoolean(object2, true); object1.getClass().getMethod("updateConfiguration", new Class[]{android.content.res.Configuration.class}).invoke(object1, new Object[]{object2}); BackupManager.dataChanged("com.android.providers.settings");zh-Hans-CN这个是什么语言???
我们是通过反射设置的。