Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:以编程方式更改应用程序标签_Java_Android_Manifest - Fatal编程技术网

Java Android:以编程方式更改应用程序标签

Java Android:以编程方式更改应用程序标签,java,android,manifest,Java,Android,Manifest,如何更改应用程序标签以更改android中java代码显示的应用程序名称? 我指的是: <application android:icon="@drawable/icon" android:label="@string/app_name"> 在Android清单中 有没有办法更新strings.xml文件中的值?目前还不可能。它是AndroidManifest.xml文件中的固定字符串,在运行时无法更改。任何感兴趣的人: 但不清楚它是更改了“应用程序标签”(即应用程序列表中图标

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

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

在Android清单中


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

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

任何感兴趣的人:
但不清楚它是更改了“应用程序标签”(即应用程序列表中图标的名称)还是仅更改了窗口标题。

在活动中,我尝试了

this.setTitle("your text");

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

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

但是这个引用下的字符串可能有多个值,这取决于配置限定符名称(值en、-large、-land等),根据
.

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

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


但对于常规应用程序,正如人们所说的,它目前是不可能的。

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

但您可以使用多个
活动别名
,可以动态启用/禁用这些活动,并指向同一个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\u ENABLED\u STATE\u DISABLED

您还可以在启用别名后,直接向主启动器添加快捷方式。sow中介绍了很多方法。

使用
您可以将应用程序图标和名称更改为您预定义的几个

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>

请记住,在
setContentView()
编写此命令之前,您必须跟踪在启动器活动中一次只启用一个别名

setTitle("Your Title");

我不知道这是怎么可能的,但它肯定会起作用。

您想更改标题栏吗???为什么要通过编程更改名称?它不是一直都应该被修复吗?@blessem我还想更改应用程序名。事实上,我想在标题栏上附加一些值。@hanry有什么实用的更改应用程序名称的解决方案吗?在这里有一些有趣的答案,它们很有效。是的,马克,这是一个常见的解决方案,与我一起工作过。谢谢。此代码设置为活动标签,但不是应用程序的标签。这不会更改启动器上的应用程序名称,只会按预期更改activityWorks的标题-当然,启动器的应用程序名称在运行时不能更改;)即使这是一个古老的问题,也不是我一直在寻找的问题,我希望这永远不会被允许,因为这将允许程序冒充他人或插件。事实上,改变应用程序标题是可能的,但不是OP拼命摸索的方式。我喜欢下面用户“Mark”给出的答案。旧线程,但是否可以根据手机的区域设置更改应用程序标题?@pingOfDoom是的,只需将其定义为字符串资源,并在每个本地化的
strings.xml
文件中提供不同的值。这可能是在您创建新项目时为您设置的。在应用程序菜单中显示另一个图标需要时间。刷新时间太长。有没有突然改变的方法?/看起来像是一个几乎完全相同的副本,可以参考答案和问题,而不是复制它。此代码设置为活动标签,但不是应用程序标签。
setTitle("Your Title");