我試圖改變我的應用程序的圖標和標籤,一旦安裝。如何在安裝應用後更改應用的圖標和標籤?
在清單中,我把這個代碼:
<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);
我錯過了什麼嗎?
編輯:只是要清楚,我不打算在安裝之前更改我的應用程序的名稱。我想在應用程序安裝在手機上後執行此操作。
我想讓用戶在安裝我的應用程序後有機會獲得另一個圖標/標籤。如果他們沒有激活該選項,他們應該有原始圖標/標籤。
我也不想更新應用程序的名稱。
任何運氣與此。因爲我面臨同樣的情況。 – Javanator
在運行時不可能。但是你可以提供不同的快捷方式,可以有任何你想要的圖標和標籤。儘管如此,這不會改變你的應用程序菜單中的圖標/標籤。爲此,如果您已經知道所需的圖標/標籤,請創建Activity-Aliases並在開始時禁用它們,並在運行時單獨啓用它們。 – JacksOnF1re