blob: 4f9c4187cb3d4102f791c5c2cdb56c62cc7100a7 [file] [log] [blame]
<html devsite><head>
<title>应用快捷方式</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
<body>
<!--
Copyright 2017 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<p>
Android 7.1.1 版本允许开发人员定义应用内特定操作的快捷方式,这些快捷方式可以显示在启动器中。这些<a href="https://developer.android.com/guide/topics/ui/shortcuts.html">应用快捷方式</a>可让用户在应用中快速启动常用或推荐的任务。
</p>
<h2 id="overview">概览</h2>
<p>
每个快捷方式都会引用一个 intent,这些 intent 在用户选择相应快捷方式时会在应用中启动特定操作。可作为应用快捷方式的操作示例包括:</p>
<ul>
<li>在地图应用中将用户导航到特定位置
</li><li>在通讯应用中向朋友发送消息
</li><li>在媒体应用中播放下一集电视节目
</li><li>在游戏应用中加载上一个存档点</li></ul>
<h2 id="examples-and-source">示例和源代码</h2>
<p>您可以在以下文件中找到此功能的主要实现方式:</p>
<pre class="devsite-click-to-copy">
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
</pre>
<p>
以下文件可提供支持功能(在 <code>ShortcutManager.java</code> 中称为隐藏 API):</p>
<pre class="devsite-click-to-copy">
packages/apps/Settings/src/com/android/settings/DevelopmentSettings.java
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java
</pre>
<p>
另外,Android 开放源代码项目启动器版本 3 支持以下快捷方式:
</p>
<pre class="devsite-click-to-copy">
packages/apps/Launcher3/
</pre>
<p>
最后,有关公共 Javadoc,请查看以下文件:
</p>
<pre class="devsite-click-to-copy">
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
</pre>
<h2 id="implementation">实现</h2>
<p>
AOSP Launcher3 已经支持使用快捷方式。如果合作伙伴有自己的启动器,该启动器也应该支持使用快捷方式。
</p>
<ul>
<li>当用户在应用图标上执行某个手势(例如长按)时,启动器应显示与每个启动器活动图标相关联的动态和静态快捷方式。<br />
快捷方式排序顺序在“快捷方式显示顺序”部分的 ShorctutManager Javadoc 中进行定义。例如,首先显示静态快捷方式,然后显示动态快捷方式。各组内的快捷方式按升序排列。
</li><li>用户应能够拖动每个动态/静态快捷方式,并将其“固定”到主屏幕。
</li><li>应备份和还原已经固定的快捷方式。(有关详细信息,请参阅 ShortcutManager 的 javadoc)</li><li>在通知中进行“内嵌回复”应在内部调用 ShortcutManager.onApplicationActive。
</li></ul>
<p>
另外,一些 Google 移动服务 (GMS) 应用也有快捷方式。OEM 启动器应该显示这些应用的快捷方式,最好还能支持“<a href="https://support.google.com/nexus/answer/6118421">固定</a>”功能(或创建快捷方式图标)。
</p>
<p>
要详细了解如何通过与框架交互以执行上述操作,请参阅 Launcher3 源代码。
</p>
<h2 id="validation">验证</h2>
<p>
使用以下 Android 兼容性测试套件 (CTS) 测试来确保您的功能(ShortcutManager 和 LauncherApps)版本可以正常运行:</p>
<pre class="devsite-click-to-copy">
cts/tests/tests/shortcutmanager/
cts/hostsidetests/shortcuts/
</pre>
<p>
请在以下位置查找用于实现 AOSP 的单元测试:</p>
<pre class="devsite-click-to-copy">
frameworks/base/services/tests/servicestests/
</pre>
<p>
其中包括:</p>
<pre class="devsite-click-to-copy">
src/com/android/server/pm/ShortcutManagerTest*.java
</pre>
<p>
您还可以针对快捷方式管理器部署 CTS 验证程序测试:
</p>
<pre class="devsite-click-to-copy">
cts/apps/CtsVerifier/src/com/android/cts/verifier/notifications/ShortcutThrottlingResetActivity.java
</pre>
</body></html>