繁体   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