应用快捷方式

Android 7.1.1 版本允许开发者在其应用中定义特定于操作的快捷方式,这些快捷方式可以显示在启动器中。这些应用快捷方式让用户可以在应用中快速启动常用或推荐的任务。

每个快捷方式都引用一个 Intent,当用户选择快捷方式时,该 Intent 会在应用中启动特定操作。您可以表示为应用快捷方式的操作示例包括:

  • 引导用户进入地图应用中的特定位置
  • 在通信应用中向朋友发送消息
  • 在媒体应用中播放电视剧的下一集
  • 在游戏应用中加载上次保存点

示例和源代码

您可以在以下文件中找到此功能的主要实现:

frameworks/base/services/core/java/com/android/server/policy/ShortcutManager.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutPackage.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutUser.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutPackageInfo.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutLauncher.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutParser.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutService.java
frameworks/base/services/core/java/com/android/server/pm/LauncherAppsService.java
frameworks/base/services/core/java/com/android/server/pm/ShortcutPackageItem.java
frameworks/base/core/java/com/android/server/backup/ShortcutBackupHelper.java
frameworks/base/core/java/android/content/pm/ShortcutManager.java
frameworks/base/core/java/android/content/pm/ShortcutServiceInternal.java
frameworks/base/core/java/android/content/pm/ShortcutInfo.java
frameworks/base/core/java/android/content/pm/LauncherApps.java

以下文件提供支持功能(在 ShortcutManager.java 中称为隐藏 API):

packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java

例如,Android 开源项目启动器版本 3 支持快捷方式

packages/apps/Launcher3/

最后,请参阅以下文件以获取公共 Javadoc。

frameworks/base/core/java/android/content/pm/ShortcutManager.java
frameworks/base/core/java/android/content/pm/ShortcutInfo.java
frameworks/base/core/java/android/content/pm/LauncherApps.java

实现

AOSP Launcher3 已支持快捷方式。如果合作伙伴有自己的启动器,则该启动器也应支持快捷方式。

  • 当用户对应用图标执行特定手势(例如长按)时,启动器应显示与每个启动器 Activity 图标关联的动态和清单快捷方式。
    快捷方式排序顺序在 ShorctutManager Javadoc 的“快捷方式显示顺序”部分中定义。例如,先显示清单快捷方式,然后显示动态快捷方式。快捷方式在每个组内按等级升序排序。
  • 用户应该能够拖动每个动态/清单快捷方式,并将其“固定”到主屏幕。
  • 固定的快捷方式应该被备份和恢复。(详情请参阅 ShortcutManager 的 javadoc)
  • 在通知上执行“内联回复”应在内部调用 ShortcutManager.onApplicationActive。

此外,一些 Google 移动服务 (GMS) 应用具有快捷方式。 OEM 启动器应该显示它们的快捷方式,并且最好也支持“固定”(或创建快捷方式图标)。

有关如何与框架交互以进行上述操作的详细信息,请参阅 Launcher3 源代码。

验证

使用以下 Android 兼容性测试套件 (CTS) 测试来确保您的功能版本(ShortcutManager 和 LauncherApps)按预期工作

cts/tests/tests/shortcutmanager/
cts/hostsidetests/shortcuts/

并在此处查找 AOSP 实现的单元测试

frameworks/base/services/tests/servicestests/

其中包括

src/com/android/server/pm/ShortcutManagerTest*.java

您也可以使用快捷方式管理器的 CTS 验证程序测试

cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/ShortcutThrottlingResetActivity.java