Wie ändere ich das Symbol und die Bezeichnung einer App nach der Installation?

Ich versuche, das Symbol und die Bezeichnung meiner App nach der Installation zu ändern.

Im Manifest habe ich diesen Code eingefügt:

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

In einer PreferenceActivity aktiviere / deaktiviere ich Aliase wie folgt:

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

Es gibt immer nur einen aktivierten Alias.

Sobald dies geändert wurde, kann ich auf dem Anwendungsstarter sehen, dass das alte Anwendungssymbol / Etikett verschwunden ist, und auf einigen Geräten dauert es einige Male (es kann sehr lange dauern), bis der Starter das aktivierte anzeigt. Während dieser Zeit kann die App nicht gestartet werden, da kein Symbol angezeigt wird.

Gibt es eine Möglichkeit, den Launcher programmgesteuert zu aktualisieren?

Außerdem habe ich versucht, nach dem Aktivieren / Deaktivieren der Aliase eine Verknüpfung zu erstellen. Es funktioniert einwandfrei, aber wenn ich versuche, die Verknüpfung zu verschieben, stürzt der Android-Launcher ab, sobald ich die Verknüpfung an der neuen Position freigebe. Hier ist der Code, den ich benutze:

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

Vermisse ich etwas?

BEARBEITEN : Um ganz klar zu sein, ich möchte den Namen meiner App VOR der Installation nicht ändern. Ich möchte es tun, sobald die App auf meinem Telefon installiert ist.

Ich möchte Benutzern die Möglichkeit geben, nach der Installation meiner App ein anderes Symbol / Etikett zu erhalten. Wenn sie diese Option nicht aktivieren, sollten sie das ursprüngliche Symbol / Etikett haben.

Ich bin auch nicht auf der Suche, den Namen der App mit einem Update zu ändern.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage