簡體   English   中英

我們可以以編程方式更改清單中與活動標記關聯的android:icon嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM