Ответ 1
Это невозможно на данный момент. Это фиксированная строка в файле AndroidManifest.xml, которая не может быть изменена во время выполнения.
Как изменить метку приложения, чтобы изменить имя приложения, показанное в java-коде в android? Я имею в виду:
<application android:icon="@drawable/icon" android:label="@string/app_name">
в манифесте Android
Есть ли способ обновить значения в файле strings.xml?
Это невозможно на данный момент. Это фиксированная строка в файле AndroidManifest.xml, которая не может быть изменена во время выполнения.
в действии, я пробовал
this.setTitle("your text");
и это сработало. Я надеюсь, что это общее решение
Используя <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);
Имейте в виду, что вам нужно отслеживать, что только один псевдоним будет включен за один раз
В Launcher Activity, перед установкой setContentView(),
setTitle ( "Ваше название" );
Я не знаю, как это возможно, но он, безусловно, работает.
Application android: label - это фиксированный ресурс referrer.
Но строка под этим ссылочным номером может иметь несколько значений, в зависимости от имен спецификаторов конфигурации (значения-en, -large, -land и т.д.), согласно Предоставление альтернативных ресурсов.
Кому интересно: Android Как изменить название приложения Но неясно, изменит ли он "метку приложения" (то есть имя значка в списке приложений) или только заголовок окна.
Если вы расширяете прошивку, вы можете это сделать, изменив файл IconCache.java и заставьте его отобразить строку с некоторым внутренним значением телефона.
Например, если вы хотите, чтобы SIM Toolkit отображал имя носителя, вы можете сделать это таким образом.
Но для обычных приложений, как было сказано, в настоящее время это невозможно.
Как сказал Мистер Смит, это невозможно,
но вы можете использовать несколько 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
Вы также можете добавить возможность непосредственного добавления ярлыка в главную панель запуска после включения псевдонима. Существует много способов, описанных здесь, на свиноматке.