private void updateLanguage(Locale locale) {
try {
IActivityManager iActMag = ActivityManagerNative.getDefault();
Configuration config = iActMag.getConfiguration();
config.locale = locale;
iActMag.updateConfiguration(config);
} catch (Exception e) {
e.printStackTrace();
}
}
或者通过反射方法调用
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;
// need permission android.permission.CHANGE_CONFIGURATION
Class[] clzParams = { Configuration.class };
Method mtdIActMag$updateConfiguration = clzIActMag.getDeclaredMethod(
"updateConfiguration", clzParams);
mtdIActMag$updateConfiguration.invoke(objIActMag, config);
} catch (Exception e) {
e.printStackTrace();
}
}
但是有个前提,需要配置permission android.permission.CHANGE_CONFIGURATION,并且这个app需要具有系统权限,比如把app放到system/priv-app目录。