Android: программно заменяйте приложение

Как изменить метку приложения, чтобы изменить имя приложения, показанное в java-коде в android? Я имею в виду:

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

в манифесте Android

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

Ответы

Ответ 1

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

Ответ 2

в действии, я пробовал

this.setTitle("your text");

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

Ответ 3

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

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

Ответ 4

В Launcher Activity, перед установкой setContentView(),

setTitle ( "Ваше название" );

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

Ответ 5

Application android: label - это фиксированный ресурс referrer.

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

Ответ 7

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

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

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

Ответ 8

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

но вы можете использовать несколько ActivityAlias, которые можно включать/отключать динамически и указывать на одну и ту же целевую активность. Поэтому создайте свой выбор для имени приложения - позвольте пользователю выбрать его и включите 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

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