package cn.mutils.app; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.content.res.Resources; import java.util.Locale; import cn.mutils.app.util.AppUtil; import cn.mutils.core.text.StringUtil; /** * Language configuration for application */ public class AppLocale { protected static final String LOCALE_FILENAME = "Locale"; public static void syncLocale(Context context) { Resources res = context.getResources(); Configuration config = res.getConfiguration(); Locale locale = getLocale(context); if (!config.locale.equals(locale)) { config.locale = locale; res.updateConfiguration(config, null); } } public static Locale getLocale(Context context) { String str = AppUtil.getPrefString(context, LOCALE_FILENAME, AppUtil.KEY, null); if (str == null) { return Resources.getSystem().getConfiguration().locale; } return StringUtil.getLocale(str); } /** * Follow system if locale is null */ public static void setLocale(Context context, Locale locale) { Locale localeAssit = locale != null ? locale : Resources.getSystem().getConfiguration().locale; Resources res = context.getResources(); Configuration config = res.getConfiguration(); if (!config.locale.equals(localeAssit)) { AppUtil.setPrefString(context, LOCALE_FILENAME, AppUtil.KEY, StringUtil.toString(locale)); config.locale = localeAssit; res.updateConfiguration(config, null); try { Intent intent = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName()); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP); context.startActivity(intent); } catch (Exception e) { // ActivityNotFoundException } } } }