안드로이드 언어 설정을 변경하기 위한 방법
1. system 권한이 있는 경우.
https://gist.github.com/xalexchen/4274535
private void updateLanguage(Locale locale) {
Log.d("ANDROID_LAB", locale.toString());
try {
Object objIActMag, objActMagNative;
Class clzIActMag = Class.forName("android.app.IActivityManager");
Class clzActMagNative = Class.forName("android.app.ActivityManagerNative");
Method getDefault = clzActMagNative.getDeclaredMethod("getDefault");
// IActivityManager iActMag = ActivityManagerNative.getDefault();
objIActMag = getDefault.invoke(clzActMagNative);
// Configuration config = iActMag.getConfiguration();
Method getConfiguration = clzIActMag.getDeclaredMethod("getConfiguration");
Configuration config = (Configuration) getConfiguration.invoke(objIActMag);
config.locale = locale;
Class[] clzParams = { Configuration.class };
Method updateConfiguration = clzIActMag.getDeclaredMethod(
"updateConfiguration", clzParams);
updateConfiguration.invoke(objIActMag, config);
} catch (Exception e) {
e.printStackTrace();
}
}
android.app.IActivityManager와 android.app.ActivityManagerNative를 사용하는 방법으로,
앱에서 세팅설정 자체를 변경할 수 있다.
2. system 권한이 없는 경우.
시스템 권한이 없는 경우에는 설정의 언어설정과 별도의 설정으로 구성할 수 있는데
Acitivty가 생성될 때마다 언어설정을 해주면 해당 언어의 XML로 UI 가 구성된다.
http://stackoverflow.com/questions/10751571/android-setting-language-in-app
String languageToLoad = "en";
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
댓글 없음:
댓글 쓰기