2015년 12월 8일 화요일

[Android] 언어 설정 변경하기.

안드로이드 언어 설정을 변경하기 위한 방법


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()); 




댓글 없음:

댓글 쓰기