android - 动态获取 XML 中的应用程序 ID

标签 android

我在我的应用程序中使用快捷方式,并且我有多种产品风格。我想为目标包动态获取应用程序 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>

最佳答案

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

你可以试试:

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

  • 在Gradle中使用resValue设置一个带有应用ID(per flavor)的字符串资源,并使用@string/...符号来引用在快捷方式 XML 中添加到它

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

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

关于android - 动态获取 XML 中的应用程序 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57074999/

相关文章:

android - 是否可以使用标准的 android api 在屏幕上移动组件?

android - 底部工作表按钮自定义样式不起作用

android - 当应用程序关闭时,AlarmManager 不起作用。这是为什么?

php - 在 Android 中从 Gallery 中选择多个图像并在 PHP 中上传到服务器

android - 相机权限无效

android - 在 Android ViewPager 中删除项目 + 滚动到下一个

java - 在 XML 中设置 Button View 的背景会使按钮不可单击

android - 如何为我的应用在 Google Play 上关闭 "Offers in-app purchases"

android - glDrawElements 在 Android (HTC Wildfire) 上速度极慢

android - 如何从 GitHub 构建 CyanogenMod 日历应用程序