ホーム画面上にショートカットを作成する:Androidアプリケーション開発者のためのTips集(10)
Androidアプリ開発者のためのTips集。今回はユーザー自身の操作ではなく、アプリケーションの処理によって、ショートカットを作成し、Androidのホーム画面に配置する方法を紹介する。
Tips概要と動作検証環境
| 用途 | 便利 |
|---|---|
| カテゴリ | その他 |
| レベル | 中級 |
| 動作確認環境 | Android 2.3.3(GingerBread) エミュレータにて動作確認 |
| 備考 | 今回のTipsは上記環境で動作確認・検証を行っています |
Tips 10:ホーム画面にショートカットを作成する
Androidのホーム画面には、ユーザーの操作でいろいろなショートカットを配置できる。例えば、アプリケーション一覧の画面上でアイコンをロングタップ(長押し)することで、ホーム画面上にショートカットを配置できる。
上記の例では、“ユーザー自身の操作”によってショートカットを作成しているが、“アプリケーションの処理”によって、ショートカットをホーム画面上に配置することも可能だ。今回はその方法について詳しく紹介する。
ショートカット作成のためのパーミッション
今回紹介する方法では、アプリケーションが“勝手に”ホーム画面上にショートカットを追加してしまうので、あらかじめ「このアプリケーションは、ホーム画面にショートカットを作成しますよ」という許可が必要になる。
そこで、AndroidManifest.xmlに以下のパーミッションを宣言しておく。
ショートカット作成のパーミッション:
<!-- ショートカット作成のパーミッション -->
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
ショートカット作成の手順
アプリケーションからショートカットを作成するための大まかな手順は、以下の通りだ。
- ショートカットをタップした時に起動するIntentを作成
- ショートカットのタイトル、アイコンリソースを指定
- Broadcast Intentを使用して、システムにショートカットの作成を依頼
上記の手順3.を見て分かる通り、実際には、アプリケーション自身が直接ショートカットを作成するわけではなく、システムに対してショートカットの作成を依頼することになる。以降で、2つのサンプルを紹介する。
サンプル1:アプリケーションのショートカットを作成する
以下に、アプリケーションのショートカット作成のサンプルを示す。
例:アプリケーションのショートカット作成のサンプル
/** アプリのショートカットを作成 */
private void makeAppShortCut(Context con){
// アプリケーションを起動するためのIntentを作成
// 今回はこのアプリ自身(ShortCutTestActivity)を起動するようにした
Intent targetIntent = new Intent( Intent.ACTION_MAIN );
targetIntent.setClassName( con, "jp.test.shortcut.ShortCutTestActivity" );
// ショートカットのタイトルは“APPShortCut”
// アイコンにはあらかじめ作成しておいた「tips_icon.png」を使用
makeShortCut(con, targetIntent, "APPShortCut", R.drawable.tips_icon );
}
/** ショートカット作成の処理 */
private void makeShortCut(Context con, Intent targetIntent, String title, int iconResource){
// ショートカット作成依頼のためのIntent
Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
// ショートカットのタップ時に起動するIntentを指定
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, targetIntent);
// ショートカットのアイコンとタイトルを指定
Parcelable icon = Intent.ShortcutIconResource.fromContext(con, iconResource);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);
// BroadCastを使って、システムにショートカット作成を依頼する
con.sendBroadcast(intent);
}
アプリケーションを起動するためのIntentのActionは、普通「Intent.ACTION_MAIN」となる。また、アイコンにはあらかじめ用意しておいた画像を使用し、タイトルには任意の名前を付ける。
システム側に対し、ショートカットの作成を依頼するためのBroadcast IntentのActionは、以下の値を使用する。
"com.android.launcher.action.INSTALL_SHORTCUT"
上記のBroadCast Intentにショートカットのタップで起動するIntent、タイトル、アイコンをセットして、BroadCastでシステムにショートカットの作成を依頼する。
実行すると、以下のように“ショートカット「XXXXXX」を作成しました”と表示され、ホーム画面上にショートカットが作成される。
サンプル2:Webページのショートカットを作成する
作成できるショートカットは、アプリケーションのショートカットだけではない。
ショートカットとして登録するのはあくまでもIntentなので、例えば、“暗黙Intent”を使って、ブラウザで特定のWebページを開くようなショートカットを作成することも可能だ。
以下に、そのサンプルを示す。なお、makeShortCut()メソッドは、サンプル1から変更していない。
例:Webページのショートカット作成のサンプル
/** Webページのショートカットを作成 */
private void makeWebPageShortCut(Context con){
// ブラウザでWebページを開くためのIntentを作成
Intent targetIntent = new Intent( Intent.ACTION_VIEW );
targetIntent.setData( Uri.parse("http://monoist.atmarkit.co.jp/") );
// ショートカットのタイトルは "WebShortCut"、
// アイコンにはあらかじめ作成しておいた tips_icon.png を使用。
makeShortCut(con, targetIntent, "WebShortCut", R.drawable.tips_icon );
}
/** ショートカット作成の処理 */
private void makeShortCut(Context con, Intent targetIntent, String title, int iconResource){
// ショートカット作成依頼のためのIntent
Intent intent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
// ショートカットのタップ時に起動するIntentを指定
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, targetIntent);
// ショートカットのアイコンと、タイトルを指定
Parcelable icon = Intent.ShortcutIconResource.fromContext(con, iconResource);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);
// BroadCast をつかって、システムにショートカット作成を依頼する
con.sendBroadcast(intent);
}
ショートカットのタップ時に起動するIntentを、Webページ参照用に変更した。これを実行すると、サンプル1の時と同じく、ホーム画面にショートカットが作成される。
作成されたショートカットをタップするとWebブラウザが起動し、Intentに設定したWebページが表示される。
≫連載「Androidアプリケーション開発者のためのTips集」の目次
Copyright © ITmedia, Inc. All Rights Reserved.





