android - 动态获取 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>
解决方案
清单占位符之类${applicationId}
的仅支持清单,而不支持任意其他 XML 文件,例如快捷方式元数据资源。
你可以试试:
在每个产品风味的源集中拥有一份快捷方式 XML 的副本,其中该副本具有硬编码的应用程序 ID
在 Gradle 中使用
resValue
应用程序 ID 设置字符串资源(按风味),并使用@string/...
符号在快捷方式 XML 中引用它
第一个肯定有效,但由于代码重复而乏味。第二个我没试过。
否则,您将考虑构建自己的 Gradle 插件或类似的处理器,以从模板动态生成这些资源。
推荐阅读
- ios - 从 web url 在 UIAlertAction 中添加图像
- java - 命名查询休眠中的语法错误
- c# - 关闭表单并再次打开它的方法是什么
- javascript - 如何在 wordpress 的 css javascript 工具箱插件中修复错误“参数必须是实现可计数的数组或对象”
- php - 如何在 PHP 和 MySQL 中逐月查找不到 6 个月前的行
- haskell - 小数类型在 Haskell 中
- perl - 用于 grep 的 Perl 脚本始终阻止并打印指定的行
- go - go中如何使用通道?
- angular - '[value]' 没有以反应形式 Angular 设置控制值
- reactjs - 无法在 react-native 中创建 ref