В Android 7.1.1 разработчики могут создавать в своих приложениях ярлыки для определенных действий, которые можно показывать в панели запуска. Ярлыки приложений позволяют пользователям быстро запускать часто выполняемые или рекомендуемые задачи в приложении.
Каждое сочетание клавиш ссылается на намерение, которое запускает определенное действие в приложении, когда пользователь выбирает сочетание клавиш. Примеры действий, которые можно выразить в виде быстрых действий:
- Навигация пользователей к определенному местоположению в приложении для работы с картами
- отправлять сообщения другу в приложении для общения;
- воспроизведение следующей серии телешоу в приложении для мультимедиа
- Загрузка последней точки сохранения в мобильной игре.
Примеры и источник
Основная реализация этой функции находится в следующих файлах:
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 Open Source Project Launcher версии 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 уже поддерживаются ярлыки. Если у партнера есть собственный лаунчер, он также должен поддерживать ярлыки.
- Когда пользователь выполняет определенный жест (например, долгое нажатие) на значке приложения, панель запуска должна показывать динамические ярлыки и ярлыки манифеста, связанные с каждым значком действия панели запуска.
Порядок сортировки ярлыков задан в документации ShortcutManager Javadoc в разделе "Порядок отображения ярлыков". Например, сначала покажите сочетания клавиш для манифеста, а затем – для динамического контента. Сочетания клавиш отсортированы по рангу в порядке возрастания в каждой группе. - Пользователь должен иметь возможность перетаскивать каждый динамический ярлык или ярлык манифеста и закреплять его на главном экране.
- Закрепленные ярлыки должны копироваться в облако и восстанавливаться. (Подробную информацию можно найти в документации по ShortcutManager.)
- При ответе на уведомление должно вызываться внутреннее событие ShortcutManager.onApplicationActive.
Кроме того, в некоторых приложениях Google для мобильных устройств (GMS) есть быстрые клавиши. В лаунчере OEM должны быть ярлыки для этих приложений, а также возможность закреплять их (или создавать значки ярлыков).
Подробную информацию о том, как взаимодействовать с фреймворком для выполнения описанных выше операций, можно найти в исходном коде Launcher3.
Проверка
Чтобы убедиться, что ваша версия функции (ShortcutManager и LauncherApps) работает правильно, используйте следующие тесты Android Compatibility Test Suite (CTS):
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