作为开发者,您可以定义快捷方式,以便在您的应用中执行特定操作。这些快捷方式可在受支持的启动器或助理(如 Google
助理)中显示,方便用户快速启动应用中的常见任务或推荐任务;
每个快捷方式都会引用一个或多个 intent
,每个 intent
都会在用户选择相应快捷方式时在应用中启动特定操作。您为应用创建的快捷方式的类型取决于应用的主要用例。 下面列出了几种可设为快捷方式的操作示例:
注意:只有处理
Intent.ACTION_MAIN
操作和Intent.CATEGORY_LAUNCHER
类别的主 activity 可以拥有快捷方式。如果应用有多个主 activity,则您需要为每个 activity 定义一组快捷方式。
您可以为应用发布以下类型的快捷方式:
app bundle
内的资源文件中定义。注意:用户还可以自行创建固定快捷方式,只需将应用的静态和动态快捷方式复制到启动器上即可。
如下图:借助应用快捷方式,您可以即时呈现关键操作并让用户直接进入应用中的深层界面
shortcuts.xml
中的功能可让您声明用户启动应用时可以执行的操作类型,并直接跳转到执行特定任务的界面。例如,您可以通过声明将应用内功能扩展至 Google
助理与应用有关的 Action 的 capability
元素,允许用户通过 Google 助理对您的应用进行语音控制。
大多数受支持的启动器一次最多可显示四个快捷方式,包括静态和动态快捷方式。推送在 Google 产品界面(例如 Google 助理)上显示的动态快捷方式时,请使用 Google 快捷方式集成库,以避免受制于快捷方式限制。
快捷方式可帮助用户快速访问您的应用的某些部分,从而为他们呈现特定类型的内容。
您要如何以快捷方式来呈现内容取决于您的用例,以及快捷方式的上下文是属于应用驱动型还是用户驱动型。虽然静态快捷方式的上下文不会更改,而动态快捷方式的上下文会不断变化,但这两种情况下的上下文都由您的应用驱动。如果用户选择了希望应用以哪种方式(例如使用固定快捷方式)向其呈现内容,则此时的上下文是由用户定义的。以下场景展示了各类快捷方式的一些用例:
静态快捷方式提供指向应用内常规操作的链接,这些操作在应用当前版本的生命周期内应保持一致。适合使用静态快捷方式的操作包括查看已发邮件、设置闹钟以及显示用户当天的锻炼活动。
如需创建静态快捷方式,请按顺序完成以下步骤:
android.intent.action.MAIN
操作和 android.intent.category.LAUNCHER
类别的 Activity。< meta-data>
元素,该元素引用了定义应用快捷方式的资源文件:<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapplication">
<application ... >
<activity android:name="Main">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="android.app.shortcuts"
android:resource="@xml/shortcuts" />
</activity>
</application>
</manifest>
res/xml/shortcuts.xml
。< shortcuts>
根元素,其中包含 < shortcut>
元素的列表。每个 < shortcut>
元素都包含有关一个静态快捷方式的信息,包括其图标、说明标签及其在应用内启动的 intent
:<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
<shortcut
android:shortcutId="compose"
android:enabled="true"
android:icon="@drawable/compose_icon"
android:shortcutShortLabel="@string/compose_shortcut_short_label1"
android:shortcutLongLabel="@string/compose_shortcut_long_label1"
android:shortcutDisabledMessage="@string/compose_disabled_message1">
<intent
android:action="android.intent.action.VIEW"
android:targetPackage="com.example.myapplication"
android:targetClass="com.example.myapplication.ComposeActivity" />
<!-- If your shortcut is associated with multiple intents, include them
here. The last intent in the list determines what the user sees when
they launch this shortcut. -->
<categories android:name="android.shortcut.conversation" />
<capability-binding android:key="actions.intent.CREATE_MESSAGE" />
</shortcut>
<!-- Specify more shortcuts here. -->
</shortcuts>
以下列表介绍了静态快捷方式内的不同属性。 您必须为 android:shortcutId
和 android:shortcutShortLabel
提供值。其他所有的值均为可选。
android:shortcutId
:这是一个字符串字面量,表示 ShortcutManager 对象对其执行操作时的快捷方式。注意:不能将此属性的值设置为资源字符串(例如 @string/foo)。
android:shortcutShortLabel
:这是用于简短说明快捷方式用途的词组。请尽可能将快捷方式的“简短说明”的长度限制在 10 个字符以内。注意:此属性的值必须为资源字符串,例如 @string/shortcut_short_label。
android:shortcutLongLabel
:这是用于详细说明快捷方式用途的词组。如果空间足够大,启动器会显示此值,而不是 android:shortcutShortLabel。 请尽可能将快捷方式的“详细说明”的长度限制在 25 个字符以内。注意:此属性的值必须为资源字符串,例如 @string/shortcut_long_label。
android:shortcutDisabledMessage
:这是当用户尝试启动已停用的快捷方式时出现在支持的启动器中的消息。此消息应向用户解释快捷方式现在停用的原因。 如果 android:enabled 为 true,则此属性的值无效。注意:此属性的值必须为资源字符串,例如 @string/shortcut_disabled_message。
android:enabled
:这用于确定用户是否能够与支持的启动器中的快捷方式进行交互。 android:enabled 的默认值为 true。 如果您将其设置为 false,则还应设置 android:shortcutDisabledMessage,用于说明停用该快捷方式的原因。如果您认为自己不需要提供此类消息,最简单的做法就是从 XML 文件中完全移除该快捷方式。
android:icon
:这是启动器向用户显示快捷方式时所用的位图或自适应图标。此值可以是某个图片的路径,也可以是包含相应图片的资源文件。请尽可能使用自适应图标来提高性能和一致性。
注意:快捷方式图标不能包含色调。