動態實現應用ICON切換

動態實現應用ICON切換-已落地

設計

  1. 每次預埋需刪除以前預埋的ICON,使用設計提供的新圖
  2. 存在三種狀況:
    • 老版本預埋ICON數量 = 新版本預埋ICON數量,須要執行如下兩步:
      • 修改AndroidManifest.xml文件中activity-alias的android:icon值
      • 替換{@link IconChangeManager#getActivityPath}方法中iconType的case值
    • 老版本預埋ICON數量 < 新版本預埋ICON數量,須要執行如下三步:
      • 修改AndroidManifest.xml文件中原有activity-alias的android:icon值,並新增多餘的activity-alias節點
      • 爲{@link IconChangeManager#ACTIVITY_PATH_ARR}添加新增activity-alias的name
      • 替換{@link IconChangeManager#getActivityPath}方法中iconType的case值,並新增多餘的case
    • 老版本預埋ICON數量 > 新版本預埋ICON數量,須要執行如下兩步:
      • 修改AndroidManifest.xml文件中原有activity-alias的android:icon值,多餘的activity-alias節點不能刪除
      • 替換{@link IconChangeManager#getActivityPath}方法中iconType的case值,並刪除多餘的case

目的

  1. 爲了解決活動開始的時候,不經過發版本實現應用圖標的切換。
  2. 減小冗餘代碼。大多數狀況下老版本預埋ICON數量 = 新版本預埋ICON數量,因此AndroidManifest.xml文件中只須要一個activity-alias節點便可。

侷限

一、在AndroidManifest.xml文件中,activity-alias必需要定義在targetActivity後面android

二、只能替換預埋在應用內的icon,不能替換網絡圖片;網絡

是由於圖片只能在AndroidManifest.xml文件中引用,不能經過代碼動態設置。ide

四、建議在應用退出的時候更換icon(這是我目前能想到的最合理的方式);post

緣由一:系統刷新icon時間較長,此時若返回到桌面(好比說按Home鍵),點擊應用圖標會提示應用未安裝ui

緣由二:系統刷新icon時間較長,若應用一直保持在前臺,可能(部分設備/部分場景)存在過了一段時間以後應用被殺死;spa

四、icon切換爲activity-alias標籤中指定的圖片後,AndroidStudio不能運行安裝。須要切回activity標籤中指定的圖片,才能夠運行安裝;設計

解決方案:code

4.一、在AndroidManifest.xml文件中爲activity和activity-alias設置scheme,例如:cdn

<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.二、打開Run/Debug Configurations彈框,修改General頁面中的Launch Options,詳細請看圖:xml

限制4

五、AndroidManifest.xml文件中添加過activity-alias標籤以後,下一版本不能刪除,可能會致使應用升級異常:

以工程中的activity(MainActivity),activity-alias(activityAlias、activityAlias2)爲例,且在升級包中刪除了activity-alias(activityAlias2),則會有如下兩種狀況:

狀況一:已安裝應用的enable activity非activityAlias2,爲MainActivity或activityAlias,則能正常升級;

狀況二:已安裝應用的enable activity爲activityAlias2,升級完成後桌面上將找不到該應用,經過設置界面能夠搜索到該應用的應用信息。

結論:一旦在AndroidManifest.xml文件中定義過activity-alias,建議不要刪除

參考文章

相關文章
相關標籤/搜索