LanguageUtil.java 1.91 KB
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"));
    }

 }