Android快捷方式-尽管targetPackage和targetClass正确,但应用程序未安装错误

3

我尝试在主屏幕上按住图标时实现Android快捷方式。但是,当我尝试启动它们时,会收到一个“应用程序未安装”的提示。

“应用程序未安装” Toast

这是我的 shortcuts.xml

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">

    <shortcut
        android:icon="@drawable/plus_black"
        android:shortcutId="add_sub"
        android:shortcutLongLabel="@string/shortcut_add_sub_long"
        android:shortcutShortLabel="@string/shortcut_add_sub">

        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="com.dancam.subscriptions.AddSubscription.AddSubscription"
            android:targetPackage="com.dancam.subscriptions.AddSubscription" />
    </shortcut>

    <shortcut
        android:icon="@drawable/pen"
        android:shortcutId="create_sub"
        android:shortcutLongLabel="@string/shortcut_create_sub_long"
        android:shortcutShortLabel="@string/shortcut_create_sub">

        <intent
            android:action="android.intent.action.VIEW"
            android:targetClass="com.dancam.subscriptions.CreateSubscription.CreateSubscription"
            android:targetPackage="com.dancam.subscriptions.CreateSubscription" />
    </shortcut>
</shortcuts>

我已经查看了这个问题,但我找不到合适的解决方案。
这是我的包/类树的样子: file tree 有什么线索可以修复这个问题吗?

android:targetPackage属性的值替换为您的applicationId,看看是否有所帮助。 - CommonsWare
@CommonsWare 谢谢,这个方法可行,但是为什么它需要 applicationId 而不是实际的包名,就像名称所示的那样? - Daniele
1个回答

11

android:targetPackage 属性值都替换为你的 applicationId

这里,“package”指的是 applicationId(又称包名),而不是类的 Java 包。


1
如何处理多个口味?${applicationId}似乎无法工作。 - Srikar Reddy
@SrikarReddy:我不知道“似乎无法工作”是什么意思。你可能想要在另一个 Stack Overflow 问题中提问,其中提供一个 [mcve] 来演示你的问题。 - CommonsWare
当我使用${applicationId}作为android:targetPackage="${applicationId}"时,我会收到“应用程序未安装”的Toast提示。 - Srikar Reddy
我有“debug”和“release”构建类型。因此,目标包名称应为android:targetPackage="com.company.app.debug",对于发布版本,则应为android:targetPackage="com.company.app",但是我无法使用android:targetPackage="${applicationId}"动态设置所需的targetPackage - Srikar Reddy
4
@SrikarReddy:啊,我明白了。${applicationId}是一个清单功能,而不是资源功能。因此,在您的debug/release/源集中有不同版本的此快捷方式XML。 - CommonsWare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接