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