Android切换语言记录

Android 3xcn.com@站长2022年9月29日 am8:09发布2年前 (2022)更新
0
导航号,我的单页导航
目录

前言

记录一下Android语言切换,网上也很多,这里摘抄于此方便自己查阅

正文

下面代码都测试过,验证ok

方式一

private void language(Locale locale) {
    try {
        LocalePicker.updateLocale(locale == Locale.ENGLISH ? Locale.SIMPLIFIED_CHINESE : Locale.ENGLISH);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

方式二

反射

private void language(Locale locale) {
    try {
        Class iActivityManager = Class.forName("android.app.IActivityManager");
        Class activityManagerNative = Class.forName("android.app.ActivityManagerNative");
        Method getDefault = activityManagerNative.getDeclaredMethod("getDefault");
        Object objIActMag = getDefault.invoke(activityManagerNative);
        Method getConfiguration = iActivityManager.getDeclaredMethod("getConfiguration");
        Configuration config = (Configuration) getConfiguration.invoke(objIActMag);
        config.locale = locale;
        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 = iActivityManager.getDeclaredMethod("updateConfiguration", clzParams);
        updateConfiguration.invoke(objIActMag, config);
//      BackupManager.dataChanged("com.android.providers.settings");
    } catch (Exception e) {
        e.printStackTrace();
    }
}

参考文章

  1. Android设置语言 - 简书 (jianshu.com)

版权声明 1、 本站名称 91易搜
2、 本站网址 https://www.91es.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权请留言
4、 本站禁止发布或转载任何违法的相关信息,如有发现请向站长举报
导航号,我的单页导航

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...