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

相关内容

热门资讯

微扑克有辅助挂!德扑ai自定义... 微扑克有辅助挂!德扑ai自定义设置数据(透视)其实真的有挂(详细辅助解密教程)是一款可以让一直输的玩...
德州之星有辅助挂!扑克世界牌局... 德州之星有辅助挂!扑克世界牌局设置(透视)一直存在有挂(详细辅助曝光教程)是一款可以让一直输的玩家,...
wpk德州透视辅助!aa po... wpk德州透视辅助!aa poker辅助软件(透视)一贯存在有挂(详细辅助透明教程);小薇(透视辅助...
aapoker透明挂!鱼扑克f... 自定义aapoker透明挂系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,...
wpk有透视辅助!德州ai辅助... wpk有透视辅助!德州ai辅助工具购买(透视)原先真的有挂(详细辅助存在挂教程)1、wpk有透视辅助...
WePoKe透视挂!wepow... WePoKe透视挂!wepower德州怎么设置(透视)确实真的有挂(详细辅助必备教程)是一款可以让一...
微扑克辅助器ios!微扑克ai... 自定义微扑克辅助器ios系统规律,只需要输入自己想要的开挂功能,一键便可以生成出微扑克专用辅助器,不...
wepoke一定有挂!wpk俱... 您好,wepoke一定有挂这款游戏可以开挂的,确实是有挂的,需要了解加微【136704302】很多玩...
德扑ai智能!aapoker怎... 德扑ai智能!aapoker怎么设置牌局(透视)切实真的是有挂(详细辅助辅助教程);小薇(透视辅助)...
微扑克系统发牌规律!云扑克辅助... 微扑克系统发牌规律!云扑克辅助软件(透视)本然存在有挂(详细辅助爆料教程)1、超多福利:超高返利,海...