Android7.1(Nougat)のAppShortcuts機能解説(開発者編(1))
Android 7.1の新機能である「App Shortcuts(アプリショートカット)機能」について開発者視点での具体的な実装方法や注意点を解説します。
神原健一の技術で広がる世界 第16回
- 2016年12月21日公開
はじめに
こんにちは。NTTソフトウェア株式会社の神原です。Androidで広がる世界の第16回です。もうすぐクリスマスですね。サンタクロースにAndroid端末をお願いした方もたくさんいらっしゃるのではないでしょうか?!あ、、1年前の第5回にも全く同じことを書いていました、ごめんなさい(笑)。小ネタはさておき、、Android 7.1 (Nougat)は、ついに正式版がリリースされましたね!前回は、Android 7.1 (Nougat)の目玉機能の1つである、 「App Shortcuts(アプリショートカット)機能」 について、ユーザ視点でご紹介しました。今回は、 アプリショートカット機能を実現したアプリが世の中にもっと増えてほしい! という思いから、開発者視点で具体的な実装方法や注意点などについてご紹介します。
アプリでの「アプリショートカット機能」対応例
具体的なアプリを題材に、アプリショートカット機能の実装方法を解説していきます。まず、以下の図のように、自分で開発している「音楽再生アプリ」で本機能を実現したいとしましょう。アプリのアイコンをロングタップすると、ポップメニューが表示されます。さらに、利用したい項目をタップすることで、その機能が起動する仕様を実現していきます。
アプリショートカット機能の実現には、前回ご紹介したとおり、2つの方法が存在します。
-
(1)静的な方法
- 追加したいアプリショートカット情報をXMLファイルで予め定義しておく方法です。
-
(2)動的な方法
- 追加したいアプリショートカットをJavaコードから動的に作成する方法です。
(1)はアプリのインストール時点から有効にし、かつ、その後基本的に変更しないアプリショートカットを実現したい場合に利用します。(2)はアプリのインストール以降に、ユーザ操作(例えば、ユーザ自らの意志で特定機能へのアプリショートカットを追加)、もしくは、何らかの条件を満たした場合(例えば、有料会員への登録後に特定機能を開放するときに合わせてアプリショートカットを追加する場合)に利用します。今回のアプリでは、「今日のおすすめ」「アルバム一覧」は(1)で、「お気に入り1」は(2)を用いることにします。それぞれについて、具体的な実現方法を紹介します。今回は、(1)についてです。
(1)静的な方法を用いた「アプリショートカット機能」実現方法
アプリショートカットとして定義したい内容をXMLファイルに追加しておく必要があります。この内容を、 res/xml/shortcuts.xml として、保存しておきましょう。 <shortcuts>タグ 内に、作成したい数のアプリショートカットを <shortcut>タグ を用いて定義していきます。
<shortcut>タグ に設定できる情報のうち、代表的なものを紹介します。ユーザに理解してもらえる内容を設定しておきましょう。
- (1)-A:アプリショートカットの表示内容
属性 | 意味 |
---|---|
android:shortcutId | アプリショートカットの識別子 |
android:enabled | アプリショートカットの有効・無効状態 |
android:icon | アプリショートカットのアイコンのリソースID |
android:shortcutShortLabel | アプリショートカットのラベル名(短い版) |
android:shortcutLongLabel | アプリショートカットのラベル名(長い版) |
紛らわしいのが、 android:shortcutShortLabel と android:shortcutLongLabel です。下図のとおり、後者の長い版は、ポップメニューに表示されるラベルです。前者の短い版は、ポップメニューをホーム画面にドラッグ&ドロップしたときにランチャーのアイコンの下に表示されるラベルです。
- (1)-B:アプリショートカットのタップ時に発行するインテント
属性 | 意味 |
---|---|
android:action | インテントのアクション名 |
android:targetPackage | インテントの送信先パッケージ名 |
android:targetClass | インテントの送信先クラス名 |
ポップメニューをタップすることで、上記のインテントが発行されることになります。
最後に、 AndroidManifest.xml の変更が必要です。ランチャーに表示するアクティビティ( android.intent.action.MAIN アクションと android.intent.category.LAUNCHER カテゴリを設定したIntent Filterを含む <activity>タグ 内に、 <meta-data>タグ の属性として、 shortcuts.xml のパスを設定しておく必要があります。以下のように定義しておきましょう。
以上で必要な設定は完了です。アプリをビルド後、Android 7.1を搭載している実機もしくはエミュレータにインストールすれば、アプリショートカットの振る舞いを確認できるはずです(前回、ご紹介したとおり、アプリショートカット機能をサポートしているホームアプリを利用していることが前提となります。注意しましょう)。
おわりに
今回は、Android 7.1のアプリショートカット機能に関して、開発者視点でご紹介しました。(2)の動的な方法は、次回以降で解説する予定です。ぜひ、次回の記事も楽しみにしていただけると幸いです!それでは、素敵なクリスマス&良い年末年始を!!
参考URL
新技術開発を好み、Androidは正式版が出る前から試用するなど、公私にわたってモバイルの世界に没頭。 プライベートで開発した「セカイフォン」で、 Multi-Screen UX Competition優秀賞受賞。MWC(バルセロナ)/IFA(ベルリン)/CES(ラスベガス)へのプロダクト出展、 国内外(デブサミやDroidconなど)のセミナー講演や書籍執筆(単著・共著含め5冊)などの活動も行っている。NTTテクノクロスきってのモバイル技術者。 プライベートでは旅行が好きで、現地の外国人にセカイフォンをデモすることが密かな楽しみ。