Ярлыки приложений

Выпуск 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

Со следующими файлами, предоставляющими вспомогательные функции (называемые скрытыми API в ShortcutManager.java ):

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 уже поддерживает ярлыки. Если у партнера есть собственная программа запуска, эта программа запуска также должна поддерживать ярлыки.

  • Когда пользователь выполняет определенный жест (например, длительное нажатие) на значке приложения, средство запуска должно отображать динамические ярлыки и ярлыки манифеста, связанные с каждым значком действия средства запуска.
    Порядок сортировки ярлыков определяется в Javadoc ShorctutManager в разделе «Порядок отображения ярлыков». Например, сначала покажите ярлыки манифеста, а затем динамические ярлыки. Ярлыки отсортированы по рангу в порядке возрастания внутри каждой группы.
  • Пользователь должен иметь возможность перетаскивать каждый ярлык динамического/манифеста и «прикреплять» его к домашнему экрану.
  • Закрепленные ярлыки должны быть скопированы и восстановлены. (Подробности см. в javadoc ShortcutManager)
  • Выполнение «Встроенного ответа» в уведомлении должно внутренне вызывать ShortcutManager.onApplicationActive.

Кроме того, в некоторых приложениях Google Mobile Services (GMS) есть ярлыки. Средство запуска OEM должно отображать для них ярлыки и в идеале также поддерживать « закрепление » (или создание значка ярлыка).

См. источник Launcher3 для получения подробной информации о том, как взаимодействовать с платформой для вышеуказанных операций.

Проверка

Используйте следующие тесты Android Compatibility Test Suite (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