LanguageUtil.java
1.91 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package com.sw.laryngoscope.utils;
import android.app.Activity;
import android.app.backup.BackupManager;
import android.content.res.Configuration;
import java.lang.reflect.Method;
import java.util.Locale;
public class LanguageUtil {
private final static String TAG = "LanguageUtil";
public static void changeSystemLanguage60(Locale locale, Activity act) {
if (locale != null) {
try {
Class classActivityManagerNative = Class.forName("android.app.ActivityManagerNative");
Method getDefault = classActivityManagerNative.getDeclaredMethod("getDefault");
Object objIActivityManager = getDefault.invoke(classActivityManagerNative);
Class classIActivityManager = Class.forName("android.app.IActivityManager");
Method getConfiguration = classIActivityManager.getDeclaredMethod("getConfiguration");
Configuration config = (Configuration) getConfiguration.invoke(objIActivityManager);
config.setLocale(locale);
//config.userSetLocale = true;
Class clzConfig = Class.forName("android.content.res.Configuration");
java.lang.reflect.Field userSetLocale = clzConfig.getField("userSetLocale");
userSetLocale.set(config, true);
Class[] clzParams = {Configuration.class};
Method updateConfiguration = classIActivityManager.getDeclaredMethod("updateConfiguration", clzParams);
updateConfiguration.invoke(objIActivityManager, config);
BackupManager.dataChanged("com.android.providers.settings");
} catch (Exception e) {
Logger.d(TAG, "changeSystemLanguage: " + e.getLocalizedMessage());
}
}
act.finish();
System.exit(0);
act.startActivity(act.getPackageManager().getLaunchIntentForPackage("com.sw.laryngoscope"));
}
}