【问题标题】:Android : Change App Label programmaticallyAndroid:以编程方式更改应用标签
【发布时间】:2011-11-28 05:16:50
【问题描述】:

如何更改应用程序标签以更改从 android 中的 java 代码显示的应用程序名称? 我指的是:

<application android:icon="@drawable/icon" android:label="@string/app_name">

在 Android 清单中

有没有办法更新 strings.xml 文件中的值?

【问题讨论】:

  • 你想改变标题栏吗????
  • 为什么要以编程方式更改名称?它不是总是应该被修复的。
  • @blessenm 我也想更改应用名称。实际上,我想在标题栏上附加一些值。
  • @hanry 任何实用的更改应用名称的解决方案?
  • this question 中有一些有趣的答案并且它们有效。

标签: java android manifest


【解决方案1】:

目前不可能。它是 AndroidManifest.xml 文件中的固定字符串,在运行时无法更改。

【讨论】:

  • 即使是老问题,也不是我要找的问题,我希望永远不允许这样做,因为它会让程序冒充其他人或插件
  • 实际上 可以更改应用程序标题 - 但不是 OP 拼命摸索的方式。我喜欢用户“Mark”在下面给出的答案。
  • 旧线程,但可以根据手机的区域设置更改应用标题吗?
  • @pingOfDoom 是的,只需将其定义为字符串资源,并在每个本地化的strings.xml 文件中提供不同的值。当您创建新项目时,这可能已经为您设置好了。
【解决方案2】:

致任何感兴趣的人:Android How to change the application title 但不清楚是改变“应用程序标签”(即应用程序列表中图标的名称)还是只改变窗口标题。

【讨论】:

    【解决方案3】:

    在活动中,我试过了

    this.setTitle("your text");
    

    它奏效了。我希望这是一个通用的解决方案

    【讨论】:

    • 是的,马克,这是一个常见的解决方案,并与我合作。谢谢。
    • 此代码是设置的活动标签,而不是应用的标签。
    • 这不会改变启动器上的应用名称,只是改变活动的标题
    • 按预期工作 - 当然启动器的应用名称不能在运行时更改;)
    【解决方案4】:

    应用程序的 android:label 是一个固定的资源引用。

    但根据配置限定符名称(values-en、-large、-land 等),此引荐来源网址下的字符串可能有多个值,根据 Providing Alternative Resources.

    【讨论】:

      【解决方案5】:

      如果您正在扩展固件,您实际上可以通过更改 IconCache.java 文件并使其显示带有手机内部值的字符串来实现。

      例如,如果您希望 SIM 工具包显示运营商的名称,您可以这样做。

      但对于常规应用,正如人们所说,目前还不可能。

      【讨论】:

        【解决方案6】:

        正如史密斯先生所说,这是不可能的,

        但你可以使用多个ActivityAlias,它们可以动态启用/禁用并指向同一个targetActivity。因此,为应用名称创建您的选择器 - 让用户选择一个并通过 packageManager 启用 ActivityAlias

        ComponentName componentName = new ComponentName(context, context.getPackageName() + "." + aliasName);
                context.getPackageManager().setComponentEnabledSetting(componentName,
                                                                       PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                                                                       PackageManager.DONT_KILL_APP);
        

        要隐藏旧别名,请使用与标志相同的代码:COMPONENT_ENABLED_STATE_DISABLED

        您还可以添加在启用别名后直接向主启动器添加快捷方式的可能性。这里有很多关于母猪的方法。

        【讨论】:

          【解决方案7】:

          使用&lt;activity-alias&gt;,您可以将应用程序图标和名称更改为您预定义的少数几个。

          Mannifest.xml中创建这样的配置

          <activity android:name="package.name.MainActivity"
           android:screenOrientation="portrait"
           android:label="@string/app_name"
           android:theme="@style/CustomTheme"
           android:launchMode="singleTask">
            <intent-filter>
              <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
          </activity>
          
          <activity-alias android:label="@string/app_name_default" 
           android:icon="@drawable/icon_default" 
           android:name=".MainActivity-Default"
           android:enabled="true"
           android:targetActivity=".MainActivity">
            <intent-filter>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>   
          </activity-alias>
          
          <activity-alias android:label="@string/app_name_flavor_one" 
           android:icon="@drawable/icon_flavor_one" 
           android:name=".MainActivity-Flavor-One"
           android:enabled="false"
           android:targetActivity=".MainActivity">
            <intent-filter>
              <action android:name="android.intent.action.MAIN" />
              <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>   
          </activity-alias>
          

          现在您可以在这两个别名之间切换,因此我们将更改应用图标或/和名称。 要从 Default 切换到 Flavor-One,请使用此代码。

           getPackageManager().setComponentEnabledSetting(
              new ComponentName("package.name", "package.name.MainActivity-Flavor-One"), 
                  PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
           getPackageManager().setComponentEnabledSetting(
              new ComponentName("package.name", "package.name.MainActivity-Default"), 
                  PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
          

          请记住,您必须跟踪一次只能启用一个别名

          【讨论】:

          • 在应用菜单中显示另一个图标需要一些时间。刷新时间过长。有没有办法突然改变?/
          • 看起来几乎是 stackoverflow.com/questions/1103027/… 的完全相同的副本,也许参考答案和问题而不是复制它。
          【解决方案8】:

          在Launcher Activity中,setContentView()之前写这个,

          setTitle("Your Title");
          

          我不知道这怎么可能,但它确实有效。

          【讨论】:

          • 此代码是设置的活动标签,而不是应用的标签。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-15
          • 2012-07-28
          • 1970-01-01
          • 2014-03-07
          • 2013-12-16
          相关资源
          最近更新 更多