Android12中更改应用程序的区域设置/语言的方法是什么?
创始人
2024-09-30 22:30:15
0

1.创建一个SharedPreferencesHelper类来保存当前应用程序使用的区域设置/语言。

public class SharedPreferencesHelper { private static final String SELECTED_LANGUAGE = "Locale.Helper.Selected.Language";

public static void setSelectedLanguage(Context context, String language) {
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
    preferences.edit().putString(SELECTED_LANGUAGE, language).apply();
}

public static String getSelectedLanguage(Context context) {
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
    return preferences.getString(SELECTED_LANGUAGE, "");
}

}

2.在应用程序的BaseActivity类中处理配置更改,包括更改语言和重启应用程序。

public abstract class BaseActivity extends AppCompatActivity { @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(LocaleHelper.onAttach(newBase)); }

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(getLayoutResourceId());
    //...
}

@Override
protected void onResume() {
    super.onResume();
    String language = SharedPreferencesHelper.getSelectedLanguage(this);
    if (!language.equals("")) {
        LocaleHelper.setLocale(this, language);
        recreate();
    }
}

}

3.创建一个LocaleHelper类来处理语言更改和保存当前语言设置。

public class LocaleHelper { private static final String SELECTED_LANGUAGE = "Locale.Helper.Selected.Language";

public static Context onAttach(Context context) {
    String language = SharedPreferencesHelper.getSelectedLanguage(context);
    return setLocale(context, language);
}

public static Context setLocale(Context context, String language) {
    SharedPreferencesHelper.setSelectedLanguage(context, language);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        return updateResources(context, language);
    }
    return updateResourcesLegacy(context, language);
}

@TargetApi(Build.VERSION_CODES.N)
private static Context updateResources(Context context, String language) {
    Locale locale = new Locale(language);
    Configuration configuration = context.getResources().getConfiguration();
    configuration.setLocale(locale);
    return context.createConfigurationContext(configuration);
}

@SuppressWarnings("deprecation")
private static Context updateResourcesLegacy(Context context, String language) {
    Locale locale = new Locale(language

相关内容

热门资讯

七分钟辅助!微信三哥玩辅助器,... 七分钟辅助!微信三哥玩辅助器,牌乐们黑科技试用(1.9分钟了解开挂辅助平台) 【无需打开直接搜索加薇...
7分钟透视!广西老友玩老师输怎... 广西老友玩老师输怎么版开挂教程视频分享装挂详细步骤在当今的网络游戏中,广西老友玩老师输怎么版作为一种...
第十分钟辅助!小闲川南宜宾辅助... 第十分钟辅助!小闲川南宜宾辅助,茶馆游戏辅助(分享开挂内幕开挂辅助脚本)>>您好:软件加薇13670...
第三分钟透视!欢乐对决辅助菜单... 第三分钟透视!欢乐对决辅助菜单,牵手辅助器(来一盘开挂辅助软件);无需打开直接搜索加薇1367043...
两分钟透视!丽水茶苑辅助,we... 两分钟透视!丽水茶苑辅助,wepoker透视脚本苹果版(推荐一款开挂辅助平台);无需打开直接搜索加薇...
第七分钟开挂!家家盘锦开挂,x... 《第七分钟开挂!家家盘锦开挂,xpoker透视辅助(玩家必备教程开挂辅助插件)》 家家盘锦开挂软件透...
六分钟辅助!随意玩免费辅助器,... 六分钟辅助!随意玩免费辅助器,决战卡五星辅助软件(每日必看开挂辅助神器) 了解更多开挂安装加(136...
第9分钟透视!丽水都来辅助器,... 第9分钟透视!丽水都来辅助器,微信牵手跑辅助(我来教教你开挂辅助脚本);无需打开直接搜索加(薇:13...
第一分钟辅助!潮汕激k辅助,w... 第一分钟辅助!潮汕激k辅助,wepoker游戏安装教程(科普开挂辅助工具) 了解更多开挂安装加(13...
第五分钟辅助!贵州闲来辅助工具... 第五分钟辅助!贵州闲来辅助工具,海盗来了辅助器最新(透视插件开挂辅助下载)【无需打开直接搜索加薇13...