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 验证程序测试:
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/ShortcutThrottlingResetActivity.java