当前位置: 首页 > 知识库问答 >
问题:

Android应用程序区域设置在Play Store发行版中不起作用

易阳朔
2023-03-14
private void setAppLocale(Context context, String language) {
    Locale locale = new Locale(language);
    Locale.setDefault(locale);
    Configuration config = context.getResources().getConfiguration();
    config.setLocale(locale);
    context.createConfigurationContext(config);
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
    Intent refresh = new Intent(getActivity().getApplicationContext(), MainActivity.class);
    startActivity(refresh);
    getActivity().finish();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    hideSystemUI();

    sharedPref = getPreferences(Context.MODE_PRIVATE);
    selectedLanguage = sharedPref.getString("Test.SL.LanguageName", language);
    selectedTheme = sharedPref.getString("Test.SL.ThemeName", "Light");

    if (selectedTheme.equals("Light")){
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
    } else if (selectedTheme.equals("Dark")) {
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
    }

    if (selectedLanguage.equals("Sinhala")) {
        language = "Sinhala";
        setAppLocale(this, "si");
    } else {
        language = "English";
        setAppLocale(this, "en");
    }

    binding = ActivityMainBinding.inflate(getLayoutInflater());
    setContentView(binding.getRoot());

    setSupportActionBar(binding.appBarMain.toolbar);
    
       ......

}

public void setAppLocale(Context context, String language) {
    Locale locale = new Locale(language);
    Locale.setDefault(locale);
    Configuration config = context.getResources().getConfiguration();
    config.setLocale(locale);
    context.createConfigurationContext(config);
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
}

共有1个答案

景唯
2023-03-14

更新新的应用程序包格式

谷歌推出了一种新的应用程序包格式,当apk文件安装在客户端设备上时,可以将它们分成更小的大小。然而,这意味着我们的应用程序中不能有动态的语言变化。

为了防止分裂,我们需要在app文件夹内的build.gradle文件中添加额外的行,如下所示。

android {
    //...
    //... removed for brevity
    bundle {
        language {
            enableSplit = false
        }
    }
}
 类似资料:
  • 编辑: 我的理解可能是错误的,但这是一个不同于以编程方式设置语言环境的问题,因为我已经实现了那里建议的答案,我仍然有一些问题。 在这个问题中,我请求帮助解决这些问题(在设置的语言环境中没有参考的问题)。 原始帖子 我试图在我的应用程序中实现自定义语言环境,并遇到几个问题。 在调用setContentView之前,我在所有活动中使用以下代码: 编辑: 我还测试了它与: 我添加到Android中的所有

  • 我想强制我的Symfony 2.5应用程序的区域设置为。我希望这个区域设置用于strftime()函数。 我的: 我正在我的一个控制器中使用以下代码来调试: 当这样执行时,它显示:。 但是,当第一行未注释时,它会显示:,因此区域设置已安装在系统中并正常工作。 我如何使Symfony始终使用配置中指定的语言环境? $locale-a:

  • 我正在做一个项目,它需要在飞行中改变语言。我正在尝试设置所需的区域设置,但我一设置,应用程序就崩溃了,抱怨它找不到资源(比如r.layout.*r.drawable.*) 这是我用来设置新区域设置的代码: 编辑:已添加日志 E/AndroidRuntime:致命异常:main java.lang.RuntimeException:无法启动activity组件Info{com.flavorburst

  • 我在10.13.6高地使用Mac 我尝试设置一个Rails应用程序在Mac上本地运行。当我尝试使用“createdb xyz”和“bin/setup”设置数据库时,我收到一条错误消息: 数据库“xyz”不存在致命错误:角色“postgres”不存在 无法为 {“适配器”= 创建数据库 有什么办法解决这个问题吗?

  • 我对碳日期输出的本地化有一个问题。 如何将carbon区域设置与我的应用程序区域设置联系起来?我将用户的语言首选项存储在db中,并在整个系统上设置locale中间件,以检查和设置每个用户的语言环境。 我如何对整个碳做同样的事情? 我尝试添加下面的代码,但它不起作用。

  • 我在azure portal中为Cosmos帐户启用了多写功能。我不明白是否也必须使用SDK来设置ApplicationRegion?如果是强制的,这个属性的目的是什么?我看到了下面的文档,但我仍然不清楚。 文档