Android: изменение метки приложения программно - PullRequest
25 голосов
/ 30 сентября 2011

Как я могу изменить метку приложения, чтобы изменить имя приложения, отображаемое из кода Java в Android? Я ссылаюсь на:

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

в манифесте Android

Есть ли способ обновить значения в файле strings.xml ?

Ответы [ 8 ]

48 голосов
/ 17 апреля 2012

в активности, я пробовал

this.setTitle("your text");

и это сработало. Я надеюсь, что это общее решение

13 голосов
/ 30 сентября 2011

На данный момент это невозможно. Это фиксированная строка в файле AndroidManifest.xml, которую нельзя изменить во время выполнения.

10 голосов
/ 05 мая 2017

Используя <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>

Теперь вы можете переключаться между этими двумя псевдонимамиПоэтому мы изменим значок приложения и / или имя.Чтобы переключиться с 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);

Имейте в виду, что вы должны отслеживать, что одновременно будет активирован только один псевдоним

3 голосов
/ 25 мая 2017

В Launcher Activity, перед setContentView() напишите это,

setTitle("Your Title");

Я не знаю, как это возможно, но это, безусловно, работает.

1 голос
/ 15 октября 2012

Android приложения: метка является фиксированным источником ссылок на ресурсы.

Но строка под этим реферером может иметь несколько значений в зависимости от имен квалификаторов конфигурации (values-en, -large, -land и т. Д.) В соответствии Предоставление альтернативных ресурсов .

0 голосов
/ 22 апреля 2016

Как сказал мистер Смит, это невозможно,

, но вы можете использовать несколько ActivityAlias, которые можно динамически включать / отключать и указывать на одну и ту же цель targetActivity. Поэтому создайте свой выбор для имени приложения - пусть пользователь выберет его и включит ActivityAlias через packageManager:

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

Вы также можете добавить возможность прямого добавления ярлыка в домашнюю программу запуска после включения псевдонима. Есть много способов, описанных здесь, на свиноматке.

0 голосов
/ 14 марта 2016

Если вы расширяете прошивку, вы можете сделать это, изменив файл IconCache.java и заставив его отобразить строку с некоторым внутренним значением телефона.

Например, если вы хотите, чтобы набор инструментов SIM-карты отображал имя оператора, вы можете сделать это следующим образом.

Но для обычных приложений, как уже было сказано, в настоящее время это невозможно.

0 голосов
/ 04 октября 2011

Для всех, кому интересно: Android Как изменить название приложения Но неясно, меняет ли он «метку приложения» (то есть имя значка в списке приложений) или только заголовок окна.

...