web-dev-qa-db-fra.com

Android: Modifier le libellé d'une application par programme

Comment changer le libellé de l'application pour modifier le nom de l'application indiqué à partir du code Java dans Android? Je fais référence à:

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

dans le manifeste Android

Est-il possible de mettre à jour les valeurs dans strings.xml file?

20
Soul

Ce n'est pas possible pour le moment. Il s'agit d'une chaîne fixe dans le fichier AndroidManifest.xml qui ne peut pas être modifiée au moment de l'exécution.

12
Mister Smith

dans l'activité, j'ai essayé 

this.setTitle("your text");

et cela a fonctionné. J'espère que c'est une solution commune

48
Mark

À l'aide de <activity-alias>, vous pouvez modifier l'icône et le nom de l'application en définissant un nombre prédéfini par vous.

Créer une telle configuration dans 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>

Maintenant, vous pouvez basculer entre ces deux alias, nous allons donc changer l'icône de l'application ou/et le nom. Pour passer de Default à Flavour-One, utilisez ce code.

 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);

Gardez à l'esprit que vous devez savoir qu'un seul alias sera activé à la fois

9
Lemberg

Dans Activité de lancement, avant setContentView(), écrivez ceci,

setTitle("Your Title");

Je ne sais pas comment c'est possible, mais ça marche sûrement.

3
Vivek Modi

L'application Android: label est un référent de ressources fixe.

Mais la chaîne sous ce référent peut avoir plusieurs valeurs, en fonction des noms de qualificateur de configuration (values-en, -large, -land, etc.), en fonction de Fournir des ressources alternatives .

1
Luten

Comme l'a dit monsieur Smith, ce n'est pas possible, 

mais vous pouvez utiliser plusieurs ActivityAlias, qui peuvent être activés/désactivés dynamiquement et pointer vers la même cibleActivity. Par conséquent, créez votre sélecteur pour le nom de l'application - laissez l'utilisateur sélectionner un et activer la ActivityAlias via la packageManager:

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

Pour masquer l'ancien alias, utilisez le même code avec le drapeau: COMPONENT_ENABLED_STATE_DISABLED

Vous pouvez également ajouter la possibilité d'ajouter directement un raccourci au lanceur d'accueil, après avoir activé l'alias. Il y a beaucoup de manières décrites ici sur la truie.

0
JacksOnF1re

À toute personne intéressée: Android Comment changer le titre de l'application Mais il n'est pas clair si cela change le "libellé de l'application" (c'est-à-dire le nom de l'icône dans la liste des applications) ou uniquement la fenêtre Titre.

0
think01

Si vous étendez le micrologiciel, vous pouvez réellement y parvenir en modifiant le fichier IconCache.Java et en lui faisant afficher une chaîne avec une valeur interne du téléphone.

Par exemple, si vous souhaitez que la boîte à outils SIM affiche le nom de l'opérateur, vous pouvez le faire de cette manière.

Mais pour les applications régulières, comme il a été dit, ce n'est actuellement pas possible.

0
Olaia