設(shè)計
- 每次預埋需刪除之前預埋的ICON,使用設(shè)計提供的新圖
- 存在三種情況:
- 老版本預埋ICON數(shù)量 = 新版本預埋ICON數(shù)量骑歹,需要執(zhí)行以下兩步:
- 修改AndroidManifest.xml文件中activity-alias的android:icon值
- 替換{@link IconChangeManager#getActivityPath}方法中iconType的case值
- 老版本預埋ICON數(shù)量 < 新版本預埋ICON數(shù)量贞瞒,需要執(zhí)行以下三步:
- 修改AndroidManifest.xml文件中原有activity-alias的android:icon值叼旋,并新增多余的activity-alias節(jié)點
- 為{@link IconChangeManager#ACTIVITY_PATH_ARR}添加新增activity-alias的name
- 替換{@link IconChangeManager#getActivityPath}方法中iconType的case值刃麸,并新增多余的case
- 老版本預埋ICON數(shù)量 > 新版本預埋ICON數(shù)量,需要執(zhí)行以下兩步:
- 修改AndroidManifest.xml文件中原有activity-alias的android:icon值酪我,多余的activity-alias節(jié)點
不能刪除
- 替換{@link IconChangeManager#getActivityPath}方法中iconType的case值消痛,并
刪除
多余的case
- 修改AndroidManifest.xml文件中原有activity-alias的android:icon值酪我,多余的activity-alias節(jié)點
- 老版本預埋ICON數(shù)量 = 新版本預埋ICON數(shù)量骑歹,需要執(zhí)行以下兩步:
目的
- 為了解決活動開始的時候,不通過發(fā)版本實現(xiàn)應用圖標的切換祭示。
- 減少冗余代碼肄满。大多數(shù)情況下
老版本預埋ICON數(shù)量 = 新版本預埋ICON數(shù)量
,所以AndroidManifest.xml文件中只需要一個activity-alias節(jié)點即可质涛。
局限
1稠歉、在AndroidManifest.xml文件中,activity-alias必須要定義在targetActivity后面
2汇陆、只能替換預埋在應用內(nèi)的icon怒炸,不能替換網(wǎng)絡(luò)圖片;
是因為圖片只能在AndroidManifest.xml文件中引用毡代,不能通過代碼動態(tài)設(shè)置阅羹。
4、建議在應用退出的時候更換icon(這是我目前能想到的最合理的方式)教寂;
原因一:系統(tǒng)刷新icon時間較長捏鱼,此時若返回到桌面(比如說按Home鍵),點擊應用圖標會提示應用未安裝
酪耕;
原因二:系統(tǒng)刷新icon時間較長导梆,若應用一直保持在前臺,可能(部分設(shè)備/部分場景)存在過了一段時間之后應用被殺死;
4看尼、icon切換為activity-alias標簽中指定的圖片后递鹉,AndroidStudio不能運行安裝。需要切回activity標簽中指定的圖片藏斩,才可以運行安裝躏结;
解決方案:
4.1、在AndroidManifest.xml文件中為activity和activity-alias設(shè)置scheme狰域,例如:
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="icon_change"
android:path="/main"
android:scheme="fqxyi" />
</intent-filter>
4.2媳拴、打開Run/Debug Configurations彈框,修改General頁面中的Launch Options北专,詳細請看圖:
5禀挫、AndroidManifest.xml文件中添加過activity-alias標簽之后旬陡,下一版本不能刪除拓颓,可能
會導致應用升級異常:
以工程中的activity(MainActivity),activity-alias(activityAlias描孟、activityAlias2)為例驶睦,且在升級包中刪除了activity-alias(activityAlias2),則會有以下兩種情況:
情況一:已安裝應用的enable activity非activityAlias2匿醒,為MainActivity或activityAlias场航,則能正常升級;
情況二:已安裝應用的enable activity為activityAlias2廉羔,升級完成后桌面上將找不到該應用溉痢,通過設(shè)置
界面可以搜索到該應用的應用信息。
結(jié)論:一旦在AndroidManifest.xml文件中定義過activity-alias憋他,建議不要刪除
孩饼。