アプリのショートカット

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 オープンソース プロジェクト ランチャー バージョン 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