首页 > 解决方案 > 动态获取 XML 中的应用程序 ID

问题描述

我在我的应用程序中使用快捷方式,并且我有多种产品风格。我想动态获取目标包的应用程序 ID。

我已经给了${applicationId},但它不起作用。我试过${packageName}没有用。还有其他选择吗?

<shortcut
    android:enabled="true"
    android:icon="@drawable/ic_barcode_icon"
    android:shortcutId="bar_code"
    android:shortcutShortLabel="@string/shortcuts_my_bar_code">
    <intent
        android:action="android.intent.action.VIEW.myBarCode"
        android:targetClass="com.appemirates.clubapparel.home.HomeActivity"
        android:targetPackage="${applicationId}" />
</shortcut>

标签: android

解决方案


清单占位符之类${applicationId}的仅支持清单,而不支持任意其他 XML 文件,例如快捷方式元数据资源。

你可以试试:

  • 在每个产品风味的源集中拥有一份快捷方式 XML 的副本,其中该副本具有硬编码的应用程序 ID

  • 在 Gradle 中使用resValue应用程序 ID 设置字符串资源(按风味),并使用@string/...符号在快捷方式 XML 中引用它

第一个肯定有效,但由于代码重复而乏味。第二个我没试过。

否则,您将考虑构建自己的 Gradle 插件或类似的处理器,以从模板动态生成这些资源。


推荐阅读