如何在Android 7.1上正确创建静态应用程序快捷方式?

3

背景

Android 7.1现在有一个名为“AppShortcut”的新功能。在文档中,他们解释了如何创建静态和动态快捷方式,并且甚至有一个示例应用程序

问题

我尝试了这个示例,但我注意到当我点击静态应用程序快捷方式时,它会显示一个toast消息"应用未安装"。

enter image description here

查看代码,我发现一个可疑的配置(在 "shortcuts.xml" 文件中):

<shortcuts xmlns:android="http://schemas.android.com/apk/res/android" >
    <shortcut
        android:shortcutId="add_website"
        android:icon="@drawable/add"
        android:shortcutShortLabel="@string/add_new_website_short"
        android:shortcutLongLabel="@string/add_new_website"
        >
        <intent
            android:action="com.example.android.appshortcuts.ADD_WEBSITE"
            android:targetPackage="com.example.android.appshortcuts"
            android:targetClass="com.example.android.appshortcuts.Main"
            />
    </shortcut>
</shortcuts>

这不太好,因为应用程序中没有"ADD_WEBSITE"的意图操作。

动态快捷方式可以正常工作(可以通过MainActivity的普通启动添加)。

我尝试过的

所以我认为这应该被更改。我尝试创建一个新的活动并更改此配置以匹配活动(操作和targetCalss),但由于某种原因我仍然收到相同的提示。

问题

代码中可能有什么问题?应该更改什么来修复它?


LogCat 中是否显示任何相关信息?请注意,在这种情况下,相关消息可能与系统进程相关,而不是应用程序的进程。 - CommonsWare
动作字符串并不重要,但必须存在。https://commonsware.com/blog/2016/10/20/random-musings-7p1-developer-preview-1.html - Eugen Pechanec
需要但未被使用的操作听起来像是一个 bug。你有报告过这个问题吗?如果有的话,我会开始处理它。你知道它的目的是什么,为什么它看起来是这样的吗?你找到了如何解决这个问题吗?它们还有“类别”标签。它的作用是什么?我以为它和 intent-filter 很相似。 - android developer
2个回答

4

很奇怪,但您可以通过更改
android:targetPackage = "com.example.android.shortcutsample" (与应用程序ID相同)或
applicationId "com.example.android.appshortcuts" (与包名相同)来解决此问题。


将其设置为“com.example.android.shortcutsample”的应用程序ID可行,但targetPackage已经设置为应用程序的包名称。它就是我写的那样,但它没有起作用。为什么?还有动作和类别是怎么回事? - android developer

0

因为你的 "com.example.android.appshortcuts.Main" 没有这个操作

com.example.android.appshortcuts.ADD_WEBSITE

您可以将此操作更改为

android.intent.action.VIEW

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