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