Как изменить значок и метку приложения после его установки?

Я пытаюсь изменить значок и метку моего приложения после его установки.

В манифесте я положил этот код:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyTheme" >
// 1st Activity declaration
<activity
    android:name=".activities.SplashScreenActivity"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:screenOrientation="portrait"
    android:theme="@style/Theme.Sherlock.NoActionBar" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        // I removed the next line to put it with the alias :
        // <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

// Activity Aliases
<activity-alias
    android:name=".Alias_0"
    android:enabled="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:targetActivity=".activities.SplashScreenActivity" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity-alias>
<activity-alias
    android:name=".Alias_1"
    android:enabled="false"
    android:icon="@drawable/alias1"
    android:label="@string/alias1"
    android:targetActivity=".activities.SplashScreenActivity" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity-alias>

А в PreferenceActivity я включаю / отключаю псевдонимы следующим образом:

packageManager.setComponentEnabledSetting(
        new ComponentName("com.mypackage", "com.mypackage.Alias_0"),
        PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
        PackageManager.DONT_KILL_APP);

packageManager.setComponentEnabledSetting(
        new ComponentName("com.mypackage", "com.mypackage.Alias_1"),
        PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
        PackageManager.DONT_KILL_APP);

Всегда есть только один активированный псевдоним.

После того, как это изменилось, я вижу на панели запуска приложений, что значок / метка старого приложения исчезли, и на некоторых устройствах для запуска активатора требуется несколько раз (это может длиться очень долго). В течение этого времени невозможно запустить приложение, так как значок отсутствует.

Есть ли способ обновить программу запуска программно?

Кроме того, я попытался создать ярлык после активации / деактивации псевдонимов. Он работает нормально, но если я попытаюсь переместить ярлык вокруг, как только я отпущу ярлык в его новое положение, запускается Android-пусковая установка. Вот код, который я использую:

Intent shortcutIntent = new Intent(getApplicationContext(), SplashScreenActivity.class);
shortcutIntent.setAction(Intent.ACTION_MAIN);

Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutTitle);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), shortcutDrawableId));
addIntent.putExtra("duplicate", false);

addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
sendBroadcast(addIntent);

Я что-то пропустил?

РЕДАКТИРОВАТЬ: Просто чтобы быть ясно, я не хочу менять имя моего приложения, прежде чем его установить. Я хочу сделать это, как только приложение установлено на моем телефоне.

Я хочу предоставить пользователям возможность иметь еще один значок / ярлык после установки моего приложения. Если они не активируют эту опцию, они должны иметь оригинальный значок / ярлык.

Я также не смотрю, чтобы изменить название приложения с обновлением.

3 ответа

Решение

Код, размещенный в вопросе, по-видимому, является правильным способом сделать это. Существует проблема с Android 4.1 и 4.2. Найти более подробную информацию здесь:

https://code.google.com/p/android/issues/detail?id=54546

Я думаю, что смогу помочь тебе. Под тегом манифеста есть это:

<application
    android:allowBackup="true"
    android:icon="@drawable/launcher_icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" />

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

Чтобы изменить имя приложения, щелкните правой кнопкой мыши папку приложения в проводнике пакетов, найдите "Refactor" и нажмите "Переименовать".

Чтобы изменить значок вашего приложения, вы должны изменить все его варианты внутри папок для рисования, а также "ic_launcher-web.png" внутри вашей папки res.

Другие вопросы по тегам