[英]Can we programatically change android:icon associated with activity tag in the manifest?
如何以編程方式更改與android清單中的活動標記關聯的android:icon
除非通過軟件升級,否則無法更改已簽名密封的APK中的清單或資源。
此外,根據此 ,默認的應用程序圖標在清單中設置。 由於清單位於應用程序的根目錄中,因此無法修改,因此無法執行此操作。 您可以考慮,如果您可以在應用程序運行時更改它,則更改將不會保存在清單中。
雖然圖標是編譯時設置,但您可以使用“活動別名”更改應用程序圖標。
<activity-alias
android:name=".MainActivity-IconA"
android:enabled="true"
android:icon="@mipmap/icon_a"
android:label="@string/icon_a_label"
android:exported="true"
android:targetActivity=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity-alias>
所以你可以有多個具有不同圖標的Alias'。 然后,您只需在運行時啟用/禁用每個:
PackageManager pm = context.getPackageManager();
// Disable Icon A
pm.setComponentEnabledSetting(
new ComponentName(this, "com.example.MainActivity-IconA"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP
);
// Enable Icon B
pm.setComponentEnabledSetting(
new ComponentName(this, "com.example.MainActivity-IconB"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP
);
這當然意味着你也知道你的圖標將是一個構建時間,但至少你可以在它們之間切換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.