今年雙11前夕發(fā)現(xiàn)我手機(jī)上的淘寶APP的圖標(biāo)和應(yīng)用名稱都變了嵌屎,變成了帶有雙11字樣的,但是我并沒(méi)有更新APP圖標(biāo)是怎么變的恍涂?這讓我很好奇宝惰!于是就有了下文。
實(shí)現(xiàn)
在AndroidManifest.xml
文件的application
節(jié)點(diǎn)中添加如下代碼:
<activity-alias
android:name=".activity.Bazaar" //替換之前Activity的名稱
android:enabled="false"
android:icon="@mipmap/ic_launcher"
android:label="應(yīng)用名稱"
android:targetActivity=".activity.SplashActivity"> //填寫應(yīng)用程序入口Activity
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
<action android:name="android.intent.action.MAIN" />
決定應(yīng)用程序最先啟動(dòng)的Activity 乳丰。
<category android:name="android.intent.category.LAUNCHER" />
決定應(yīng)用程序是否顯示在程序列表里掌测。
在程序第一個(gè)執(zhí)行的activity中添加:
PackageManager mP;
ComponentName def;
ComponentName mBazaar;
mP = getApplicationContext().getPackageManager();
def = new ComponentName(getBaseContext(),"com.fangbei.umarket.activity.SplashActivity");
mBazaar=new ComponentName(getBaseContext(),"com.fangbei.umarket.activity.Bazaar");
private void enabledComponent(ComponentName name) {
mP.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);
}
private void disableComponent(ComponentName name) {
mP.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}
COMPONENT_ENABLED_STATE_DISABLED
通過(guò)查看源代碼注釋給的解釋是禁用程序列表中的某個(gè)應(yīng)用圖標(biāo)
COMPONENT_ENABLED_STATE_ENABLED
則相反
執(zhí)行此方法改變圖標(biāo)
private void setIconSc() {
disableComponent(def); //禁用之前的圖標(biāo)
enabledComponent(mBazaar);}
private void setIconWm() {
disableComponent(mBazaar);
enabledComponent(def);}//顯示快捷圖標(biāo)
假如雙十一快到了就可以添加一個(gè)網(wǎng)絡(luò)請(qǐng)求,調(diào)用上面例子setIconWm()
方法的判斷是否需要修改應(yīng)用圖標(biāo)和名稱产园!
創(chuàng)建一個(gè)APP的快捷方式汞斧,快捷方式必須指向程序入口的Activity,此時(shí)這個(gè)APP就在桌面有兩個(gè)快捷方式什燕,然后在Activity里面通過(guò)PackageManager 類把之前的快捷方式禁用隱藏起來(lái)粘勒,