我在应用程序中使用快捷方式,并且有多种产品风格。我想动态获取目标包的应用程序 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>
Run Code Online (Sandbox Code Playgroud)
${applicationId}仅清单支持清单占位符,而不支持任意其他 XML 文件,例如快捷方式元数据资源。
你可以尝试:
在每个产品风格的源集中拥有快捷方式 XML 的副本,其中该副本具有硬编码的应用程序 ID
在 Gradle 中使用resValue来设置带有应用程序 ID(每个风格)的字符串资源,并使用@string/...符号在快捷方式 XML 中引用它
第一个肯定有效,但由于代码重复而很乏味。我还没有尝试过第二个。
否则,您将考虑构建自己的 Gradle 插件或类似的处理器,可以从模板动态生成这些资源。