2013-08-01 37 views
4

我試圖改變我的應用程序的圖標和標籤,一旦安裝。如何在安裝應用後更改應用的圖標和標籤?

在清單中,我把這個代碼:

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

我錯過了什麼嗎?

編輯:只是要清楚,我不打算在安裝之前更改我的應用程序的名稱。我想在應用程序安裝在手機上後執行此操作。

我想讓用戶在安裝我的應用程序後有機會獲得另一個圖標/標籤。如果他們沒有激活該選項,他們應該有原始圖標/標籤。

我也不想更新應用程序的名稱。

+0

任何運氣與此。因爲我面臨同樣的情況。 – Javanator

+0

在運行時不可能。但是你可以提供不同的快捷方式,可以有任何你想要的圖標和標籤。儘管如此,這不會改變你的應用程序菜單中的圖標/標籤。爲此,如果您已經知道所需的圖標/標籤,請創建Activity-Aliases並在開始時禁用它們,並在運行時單獨啓用它們。 – JacksOnF1re

回答

0

我想我可以幫助你。根據清單標籤有這樣的:

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

您可以編輯這些並將其更改爲您在可繪爲您啓動保存圖標,你也可以改變它們命名爲不同的字符串。

+0

我已將這些信息添加到應用程序標記中。正如我寫的,我想更改已安裝並在Android啓動器中可見的應用程序的標籤/圖標。 –

+0

好的。你可以嘗試重新安裝應用程序,然後名稱和啓動器將得到更新。 – superuser

+0

不,我想讓用戶在安裝我的應用程序後有機會獲得另一個圖標/標籤。如果他們沒有激活該選項,他們應該有原始圖標/標籤。 –

-1

要更改應用程序的名稱,請右鍵單擊包資源管理器中的應用程序文件夾,查找「Refactor」並按下重命名。

要更改應用程序的圖標,您必須更改可繪製文件夾內的所有變體以及res文件夾中的「ic_launcher-web.png」。

+0

我不想在我的手機上安裝它之前更改我的應用程序的名稱,我想將其添加到我的已安裝的應用程序 –

+0

您的意思是將應用程序更新爲新版本?如果是這樣,那麼你必須在你的XML中更改版本代碼。 – IDSA

+0

不可以。我想讓用戶在安裝我的應用程序後有機會獲得另一個圖標/標籤 –

相關問題