应用快捷方式

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 已经支持使用快捷方式。如果合作伙伴有自己的启动器,该启动器也应该支持使用快捷方式。

  • 当用户在应用图标上执行某个手势(例如长按)时,启动器应显示与每个启动器活动图标相关联的动态和静态快捷方式。
    快捷方式排序顺序在“快捷方式显示顺序”部分的 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 Verifier 测试:

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