Android:以编程方式更改App Label

Sou*_*oul 25 java android manifest

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

<application android:icon="@drawable/icon" android:label="@string/app_name">
Run Code Online (Sandbox Code Playgroud)

在Android Manifest中

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

Mar*_*ark 49

在活动中,我试过了

this.setTitle("your text");
Run Code Online (Sandbox Code Playgroud)

它起作用了.我希望这是一个常见的解决方案

  • 此代码是活动的标签,但不是应用程序的标签. (23认同)
  • 这不会更改启动器上的应用程序名称,只需更改活动的标题即可 (3认同)
  • 是马克,这是一个常见的解决方案,并与我合作.谢谢. (2认同)

Mis*_*ith 13

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

  • 即使是旧的,而不是我正在寻找的问题,我希望永远不会允许,因为它会让程序像其他人或插件一样构成 (3认同)

Rom*_*ych 10

使用<activity-alias>您可以将应用程序图标和名称更改为您预定义的少数几个.

在中创建这样的配置 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>
Run Code Online (Sandbox Code Playgroud)

现在您可以在这两个别名之间切换,因此我们将更改应用程序图标或/和名称.要从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);
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

setTitle("Your Title");
Run Code Online (Sandbox Code Playgroud)

我不知道这怎么可能,但它肯定有效。