如果您在应用中使用 Google Shortcuts Integration 库,您推送到 Google 的动态快捷方式就会在 Google 助理应用中以语音快捷方式建议的形式向用户显示。您可以向 Google 助理推送任意数量的动态快捷方式,并可以使用 ShortcutManagerCompat 库的 pushDynamicShortcut() 方法。
配置开发项目
若要向应用添加动态快捷方式功能,就需要使用 Google Shortcuts Integration 库,这是一种 Android Jetpack 库。本部分将介绍如何配置应用开发项目来包含此库。
// Define the dynamic shortcut for an itemvarintent=Intent(context,DisplayOrderActivity::class.java)intent.action=Intent.ACTION_VIEWvarshortcutInfo=ShortcutInfoCompat.Builder(context,id).setShortLabel("Running").setLongLabel("Start running").addCapabilityBinding("actions.intent.CREATE_ITEM_LIST","itemList.name",Arrays.asList("My First List")).setIntent(intent)// Push the shortcut.build()// Push the shortcutShortcutManagerCompat.pushDynamicShortcut(context,shortcutInfo)
Java
// Define the dynamic shortcut for an itemIntentintent=newIntent(context,DisplayOrderActivity.class);intent.setAction(Intent.ACTION_VIEW);ShortcutInfoCompat.BuildershortcutInfo=newShortcutInfoCompat.Builder(context,id).setShortLabel("Running").setLongLabel("Start running").addCapabilityBinding("actions.intent.CREATE_ITEM_LIST","itemList.name",Arrays.asList("My First List")).setIntent(intent).build();// Push the shortcutShortcutManagerCompat.pushDynamicShortcut(context,shortcutInfo);
在上述示例代码中,通过 ShortcutInfoCompat.Builder 方法引用的 id 定义了所生成快捷方式对象的 shortcutId。此 id 必须是一个唯一的字符串字面量。如需了解详情,请参阅 Android 快捷方式文档。
varintent:Intent=Intent(context,DisplayOrderActivity::class.java)intent.setPackage(this,"com.sample.app")intent.setAction(Intent.ACTION_VIEW)varshortcutInfo:ShortcutInfoCompat=ShortcutInfoCompat.Builder(context,id).setShortLabel("Create a list").setLongLabel("Create a list").addCapabilityBinding("actions.intent.CREATE_ITEM_LIST").setIntent(intent).build()ShortcutManagerCompat.pushDynamicShortcut(context,shortcutInfo);
Java
Intentintent=newIntent(context,DisplayOrderActivity.class);intent.setPackage(this,"com.sample.app");intent.setAction(Intent.ACTION_VIEW);ShortcutInfoCompatshortcutInfo=newShortcutInfoCompat.Builder(context,id).setShortLabel("Create a list").setLongLabel("Create a list").addCapabilityBinding("actions.intent.CREATE_ITEM_LIST").setIntent(intent).build();ShortcutManagerCompat.pushDynamicShortcut(context,shortcutInfo);
通过 Google 助理测试动态快捷方式
当 Google 助理从应用中成功接收某个动态快捷方式后,该快捷方式便可在 Android 版 Google 助理应用中以语音快捷方式建议的形式显示。Google 助理应用会推荐应用推送的最新快捷方式。
如需通过 Google 助理测试动态快捷方式,请按以下步骤操作:
按照与 Google 助理插件相同的设置要求,创建与应用有关的 Action 的预览,并确保测试设备或模拟器已准备好执行测试操作。
[null,null,["最后更新时间 (UTC):2025-07-27。"],[],[],null,["# Push dynamic shortcuts to Assistant\n\n[Android shortcuts](/guide/topics/ui/shortcuts) provide users with quick\nmethods to perform an action or access content in an app.\nAssistant can proactively suggest your Android dynamic shortcuts to users at\nrelevant times, enabling users to easily discover and replay your\nvoice-enabled functionality.\n\nFor example, you can push a shortcut for each note a user creates in\nyour note taking app. You make\ndynamic links eligible to display on Google surfaces, like Assistant,\nby adding the [Google Shortcuts Integration Jetpack library](/jetpack/androidx/releases/core#core-google-shortcuts-1.0.1) to your project.\nThis library lets Assistant take in dynamic shortcuts you push using the\n[`ShortcutManagerCompat`](/reference/androidx/core/content/pm/ShortcutManagerCompat) class, which is a Jetpack wrapper for the\n[`ShortcutManager`](/reference/android/content/pm/ShortcutManager) API.\n\nWhen you use the Google Shortcuts Integration library in your app, dynamic\nshortcuts you push to Google are visible to users as voice shortcut suggestions\nin the Assistant app. You can push an unlimited number of dynamic shortcuts to\nAssistant using the [`pushDynamicShortcut()`](/reference/androidx/core/content/pm/ShortcutManagerCompat#pushDynamicShortcut(android.content.Context,%20androidx.core.content.pm.ShortcutInfoCompat)) method of the\n`ShortcutManagerCompat` library.\n\nConfigure your development project\n----------------------------------\n\nAdding dynamic shortcuts functionality to your app requires the\nGoogle Shortcuts Integration library, which is an Android Jetpack library.\nThis section describes how to configure your app development project to include\nthis library.\n\nTo add this Jetpack library and configure your project, follow these steps:\n\n1. Update your `gradle.properties` file to handle Jetpack libraries:\n\n **gradle.properties** \n\n android.useAndroidX=true\n # Automatically convert third-party libraries to use AndroidX\n android.enableJetifier=true\n\n2. Add the Jetpack library dependencies to your `build.gradle`:\n\n **app/build.gradle** \n\n dependencies {\n implementation \"androidx.core:core:1.6.0\"\n implementation \"androidx.core:core-google-shortcuts:1.0.1\"\n ...\n }\n\n In the preceding sample code, you list two Jetpack libraries as\n dependencies. The `androidx.core:core:1.6.0` library contains the\n `ShortcutManagerCompat` class, which you use to push dynamic shortcuts to\n Google.\n\n The `androidx.core:core-google-shortcuts:1.0.1` is the Google\n Shortcuts Integration library. This library contains no developer-facing\n API. By adding it as a dependency, you enable Assistant to take in the\n dynamic shortcuts you push using the `ShortcutManagerCompat` class.\n | **Note:** Visit the [Jetpack library explorer](/jetpack/androidx/explorer) to find the latest versions of the Core and Google Shortcuts Integration libraries.\n\nPush dynamic shortcuts\n----------------------\n\nTo push dynamic shortcuts that are eligible for display on Assistant,\nyou first create the shortcut using the `ShortcutInfoCompat.Builder()`\nclass.\n\nYou then push the shortcut using the\n`ShortcutManagerCompat.pushDynamicShortcut()` method. Shortcuts are pushed\nwhenever a user completes a relevant action in your app. The following sample\ncode pushes a shortcut every time a user creates a list in a notes and lists app.\n\n**ExampleOrderActivity** \n\n### Kotlin\n\n```kotlin\n// Define the dynamic shortcut for an item\nvar intent = Intent(context, DisplayOrderActivity::class.java)\nintent.action = Intent.ACTION_VIEW\nvar shortcutInfo = ShortcutInfoCompat.Builder(context, id)\n .setShortLabel(\"Running\")\n .setLongLabel(\"Start running\")\n .addCapabilityBinding(\n \"actions.intent.CREATE_ITEM_LIST\", \"itemList.name\", Arrays.asList(\"My First List\")\n )\n .setIntent(intent) // Push the shortcut\n .build()\n\n// Push the shortcut\nShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo)\n```\n\n### Java\n\n```java\n// Define the dynamic shortcut for an item\nIntent intent = new Intent(context, DisplayOrderActivity.class);\nintent.setAction(Intent.ACTION_VIEW);\n\nShortcutInfoCompat.Builder shortcutInfo = new ShortcutInfoCompat.Builder(context, id)\n .setShortLabel(\"Running\")\n .setLongLabel(\"Start running\")\n .addCapabilityBinding(\n \"actions.intent.CREATE_ITEM_LIST\", \"itemList.name\", Arrays.asList(\"My First List\"))\n .setIntent(intent)\n .build();\n\n// Push the shortcut\nShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);\n```\n\nThe `id` referenced in the `ShortcutInfoCompat.Builder` method in the preceding\nsample code defines the `shortcutId` of the resulting shortcut object. This `id`\nmust be a unique string literal. For details, see the\n[Android Shortcuts documentation](/reference/android/content/pm/ShortcutInfo#getId()).\n\nIn the preceding example, the `addCapabilityBinding` method binds the dynamic\nshortcut to a `capability` of the same `android:name` defined in\n`shortcuts.xml`. This method lets you associate the shortcut to a\nsemantic [built-in intent](/guide/app-actions/intents) (BII) parameter.\n\nDynamic shortcuts sometimes are pushed without any particular BII parameter\nassociation. When invoked by the user, Assistant triggers the `intent` defined\nin the shortcut to fulfill the action. The following example shows a dynamic\nshortcut with no parameter association: \n\n### Kotlin\n\n```kotlin\nvar intent: Intent = Intent(context, DisplayOrderActivity::class.java)\nintent.setPackage(this, \"com.sample.app\")\nintent.setAction(Intent.ACTION_VIEW)\n\nvar shortcutInfo: ShortcutInfoCompat = ShortcutInfoCompat.Builder(context, id)\n .setShortLabel(\"Create a list\")\n .setLongLabel(\"Create a list\")\n .addCapabilityBinding(\"actions.intent.CREATE_ITEM_LIST\")\n .setIntent(intent)\n .build()\n\nShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);\n```\n\n### Java\n\n```java\nIntent intent = new Intent(context, DisplayOrderActivity.class);\nintent.setPackage(this, \"com.sample.app\");\nintent.setAction(Intent.ACTION_VIEW);\n\nShortcutInfoCompat shortcutInfo = new ShortcutInfoCompat.Builder(context, id)\n .setShortLabel(\"Create a list\")\n .setLongLabel(\"Create a list\")\n .addCapabilityBinding(\"actions.intent.CREATE_ITEM_LIST\")\n .setIntent(intent)\n .build();\n\nShortcutManagerCompat.pushDynamicShortcut(context, shortcutInfo);\n```\n\nTest dynamic shortcuts with Assistant\n-------------------------------------\n\nWhen Google Assistant successfully takes in a dynamic shortcut from your\napplication, the shortcut is eligible to appear as a Voice Shortcut suggestion in the\nAssistant Android app. The Assistant app suggests the most recent shortcuts\npushed by your app.\n\nTo test your dynamic shortcuts with Assistant, follow these steps:\n\n1. Create a preview of your App Actions and prepare your test device or emulator for testing actions by following the same setup requirements as for the [Google Assistant Plugin](/guide/app-actions/test-tool).\n2. Open your app and define a dynamic shortcut to push. Then complete an action. For example, if you push a shortcut whenever a note is created in your note taking app, then create a new note.\n3. Open **Shortcuts** in the **Assistant Settings** app on your device. Your dynamic shortcut appears in the list for your app."]]