情報畑でつかまえてロゴ
本サイトは NTTテクノロスが旬の IT をキーワードに
IT 部門が今知っておきたい最新テクノロジーに関する情報をお届けするサイトです

Android7.1(Nougat)のAppShortcuts機能解説(開発者編(2))

Android 7.1の新機能である「App Shortcuts(アプリショートカット)機能」について前回に引き続き、開発者視点での具体的な実装方法や注意点を解説します。

はじめに

こんにちは。NTTソフトウェア株式会社の神原です。Androidで広がる世界の第17回です。前回に続き、Android 7.1 (Nougat)の目玉機能の1つである、 「App Shortcuts(アプリショートカット)機能」 について、開発者視点で具体的な実装方法や注意点などについてご紹介します。 アプリショートカット機能をアプリに追加する 際に参考にしていただければと考えています。

前回の復習

「アプリショートカット機能」の具体的な実現方法を紹介すべく、前回は題材として、「音楽再生アプリ」を取り上げ、(1)静的な方法を用いて、アプリショートカット機能を実現する方法を解説しました。前回の記事も合わせて、ご参照ください。

image1

(2)動的な方法を用いた「アプリショートカット機能」実現方法

今回は動的な方法を用いて、アプリショートカット機能を実現する方法を解説します。具体的には、追加したいアプリショートカットの内容を、Javaコードで記述していきます。これにより、任意のタイミング(画面内のボタン押下や、特定の条件を満たしたときなど)で、アプリショートカットの内容(文字列やアイコン)を動的に決定した上で、アプリショートカットを追加できます。言い方を変えると、ユーザ自らの意志で、特定のアプリショートカットを追加できる機能を開発者が提供できることになるとも言えるでしょう。

前置きはここまでにして、具体的な内容に入っていきましょう。アプリ内のボタンが押された契機で、「お気に入り1」というアプリショートカットを動的に追加する処理を実現していきます。

image1

このような振る舞いを実現するには、ボタン押下時に実行されるイベント処理として、Javaコードで以下のように記述します。

image1

処理の内容を簡単に解説します。

  • (1)アプリショートカットタップ時に発行されるIntentの生成

ポップメニュー表示後、動的なショートカット(お気に入り1)をタップしたときに発行されるIntentを作成しています。今回は、呼び出し元とは別のActivityであるFavoriteMusicActivity(独自に作成したクラス)を起動するためのIntentを定義しています。1つ注意点があります。上記例のように、作成したインテントには、適切なアクションを設定する必要があります。今回は、 setAction()メソッド を用いて、 Intent.ACTION_DEFAULT を設定しています。

  • (2)動的ショートカットの生成

ショートカット情報として、 ShortcutInfoクラス のビルダー( ShortcutInfo.Builder )を用いて、インスタンスを作成します。その際、ショートカットの識別子として、IDを設定する必要があります。今回は例として、 "id1" を設定しています。その他必要となる情報を各セッターメソッドを用いて設定しています。それぞれの意味を紹介しておきます。

メソッド名(セッター)設定する内容
setShortLabel アプリショートカットのラベル名(短い版)
setLongLabel アプリショートカットのラベル名(長い版)
setIcon アプリショートカットのアイコン
setIntent アプリショートカットのタップ時に発行されるIntent
  • (3)動的ショートカットの追加

ショートカットを管理するクラスである ShortcutManagerクラス のインスタンスを生成します。次に、 addDynamicShortcuts(List<ShortcutInfo>)メソッド を用いて、(2)で作成した動的ショートカットを追加しています。

以上で必要な実装は完了です。動的ショートカットは、任意のタイミングに、任意の内容で作成できるという長所を持っています。前回紹介した静的ショートカットと比較して、自由度が高いと言えるでしょう。

動的ショートカットの補足

動的ショートカットの追加は、簡単に実装できそうというイメージを持っていただけたのではないでしょうか。ただ、残念ながら、動的ショートカットは、他にも考慮しておくことがあります。例えば、動的ショートカットの削除についてです。動的ショートカットをサポートする場合、 追加したものを削除する方法の提供要否検討が必要 と言えるでしょう。 ShortcutManagerクラス には、動的ショートカットを個別に削除するための removeDynamicShortcuts(List<String>)メソッド が提供されています。これを用いて削除処理を実装することになります。引数として、ショートカットの追加時に設定した識別子のリストを指定することになります。また、一括で全て削除するための removeAllDynamicShortcuts()メソッド もありますので、必要に応じて利用しましょう。

さらに、既に追加済のショートカットの内容を更新するための updateShortcuts(List<ShortcutInfo>)メソッド も提供されていますので、こちらも必要に応じて利用することになるでしょう。更新時は、ユーザが以前登録したショートカットの内容を差し替えることになるため、ユーザが意図しない更新にならないよう注意しましょう。例えば、今回の題材とした、「音楽再生アプリ」であれば、ユーザがお気に入りとして登録しショートカットを作成した楽曲をショートカット機能経由で再生したときに、ユーザが意図しない楽曲に勝手に差し替わっていたら、ユーザを困惑させてしまうでしょう。 更新処理を実現する場合は、ユーザ視点を十分考慮した処理 が必要だと言えるでしょう。

ほかにも、ShortcutManagerクラスには、さまざまなメソッドが提供されていますので、APIリファレンスに目を通すことをお勧めします。

おわりに

今回は、Android 7.1のアプリショートカット機能に関して、開発者視点でご紹介しました。動的ショートカットは、静的ショートカットと比較して考慮すべきことが多く、実装は少し大変かもしれません。ただ、その一方で、自由度が高いため、効果的に活用すれば、ユーザの満足度を高められるでしょう。次回の内容はまだ決めていませんが、楽しみにしていただけると幸いです。

参考URL

Androidで広がる世界(本ブログのトップページ) (当社ホームページ)

Android 7.1 (Nougat)のApp Shortcuts機能解説(ユーザ編)

Android 7.1 (Nougat)のApp Shortcuts機能解説(開発者編(1))

著者プロフィール
神原 健一
神原 健一
新技術開発を好み、Androidは正式版が出る前から試用するなど、公私にわたってモバイルの世界に没頭。 プライベートで開発した「セカイフォン」で、 Multi-Screen UX Competition優秀賞受賞。MWC(バルセロナ)/IFA(ベルリン)/CES(ラスベガス)へのプロダクト出展、 国内外(デブサミやDroidconなど)のセミナー講演や書籍執筆(単著・共著含め5冊)などの活動も行っている。NTTテクノクロスきってのモバイル技術者。 プライベートでは旅行が好きで、現地の外国人にセカイフォンをデモすることが密かな楽しみ。