失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android 监听系统语言变化

Android 监听系统语言变化

时间:2022-12-03 15:25:54

相关推荐

Android 监听系统语言变化

**

监听系统语言变化

**

监听系统语言变化

首先先创建一个MyApplication继承Application

public class MyApplication extends Application {//监听语言切换public static MyApplication myApplication;private static List<Activity> activities = new ArrayList<>();private static MyApplication sInstance = null;@Overridepublic void onCreate() {super.onCreate();//保存当前语言myApplication= this;String lang =SharedPreferenceUtil.getLanguage();SharedPreferenceUtil .savePre(this, "LANGUAGE_KEY", "language", lang);}public static MyApplication getInstance() {return sInstance;}}

调用系统监听语言变化接口

@Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);String lang = SharedPreferenceUtil.getLanguage();String firstLang = SharedPreferenceUtil .readPre(MyApplication .getInstance(), "LANGUAGE_KEY", "language");//如果语言发生变化if (!lang.equals(firstLang)) {Locale locale = null;locale = SupportLanguageUtil.getSystemPreferredLanguage();Log.e(TAG, "语言" + locale.getLanguage());}//关闭所有activityfor (int i = 0; i < activities.size(); i++) {activities.get(i).finish();}}//当语言发生变化时,杀死App进程ActivityManager mActivityManager = (ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE);List<ActivityManager.RunningAppProcessInfo> mList = mActivityManager.getRunningAppProcesses();for (ActivityManager.RunningAppProcessInfo runningAppProcessInfo : mList) {if (runningAppProcessInfo.pid != android.os.Process.myPid()) {android.os.Process.killProcess(runningAppProcessInfo.pid);}}android.os.Process.killProcess(android.os.Process.myPid());}

储存数据

public class SharedPreferenceUtil {public static void savePre(Context context,String name,String key,String value){//创建共享参数对象SharedPreferences preference = context.getSharedPreferences(name, Context.MODE_APPEND);Editor editor = preference.edit();editor.putString(key, value);mit();}public static String readPre(Context context,String name,String key){//创建共享参数对象SharedPreferences preference = context.getSharedPreferences(name, Context.MODE_APPEND);return preference.getString(key, "");}public static void delPre(Context context,String name,String key){SharedPreferences preference = context.getSharedPreferences(name, Context.MODE_APPEND);Editor editor = preference.edit();if(key==null||"".equals(key)){editor.clear();}else{editor.remove(key);}mit();}/*** 获取系统默认语言 * @return*/public static String getLanguage() {//获取系统当前使用的语言 Locale locale = Locale.getDefault();String language = locale.getLanguage();return language; }}

如果觉得《Android 监听系统语言变化》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。