サイト移転のお知らせ:http://techbooster.org/に移転しました

アプリの機能ごとにショートカットを作る

7月 4, 2011   //   by kseto   //   ユーザインターフェース  //  No Comments

今回はAndroidアプリの機能ごとにHOME画面にショートカットを作る方法を説明します。
たとえば家計簿アプリを作った場合には入力モード、表示モード、それぞれのモードごとにショートカットをHOME画面に作ることができるようになります。

このようなショートカットの作成にはcom.android.launcher.action.INSTALL_SHORTCUTインテントをブロードキャスト送信します。

詳細な説明は続きからどうぞ。

INSTALL_SHORTCUTインテントのExtraData

INSTALL_SHORTCUTインテントには以下のExtraDataを設定する必要があります。

EXTRA_SHORTCUT_NAME ショートカットの名前
EXTRA_SHORTCUT_ICON ショートカットのアイコン
EXTRA_SHORTCUT_INTENT ショートカットをタップしたときに発行されるインテント

ポイントはEXTRA_SHORTCUT_INTENTです。
EXTRA_SHORTCUT_INTENTにショートカットがタップされたときにアプリに対して送信するインテントを設定することができます。つまり、作成するショートカットによって設定するEXTRA_SHORTCUT_INTENTを変えることで、呼ばれるアプリの動作を変えることができます。

サンプル

サンプルではアプリ起動時にToastで表示する文字列が異なる2つのショートカットを、アプリのボタンから作成することができます。

// ショートカットインテントを設定したインテントを作る
Intent makeIntent(String shortcutName, Intent shortcutIntent) {
	Intent intent = new Intent();

	// ショートカットインテントを設定
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);

    // ショートカット名を設定
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName);
    
    // アイコン設定
    Parcelable iconResource = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);

    // アクションを設定
    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
	
    return intent;
}

public void onClick(View v) {
	if (v.getId() == R.id.shortcut_btn1) {
		// ショートカットインテントを作成
        Intent shortcutIntent=new Intent(Intent.ACTION_VIEW);
        shortcutIntent.setClassName(this, makeShortcut.class.getName());

        // メッセージを設定
        shortcutIntent.putExtra("MESSAGE","THIS IS TEST MESSAGE!!!");
		
        // 送信
        sendBroadcast(makeIntent("shortcut1", shortcutIntent));
	} else if (v.getId() == R.id.shortcut_btn2) {
		// ショートカットインテントを作成
        Intent shortcutIntent=new Intent(Intent.ACTION_VIEW);
        shortcutIntent.setClassName(this, makeShortcut.class.getName());

        // メッセージを設定
        shortcutIntent.putExtra("MESSAGE","WE ARE TECHBOOSTER!!!");

        // インテント送信
        sendBroadcast(makeIntent("shortcut2", shortcutIntent));
	}
}

ショートカットから呼び出された際にはインテントに設定されているMESSAGE文字列を取得してToastに表示させるようにします。

@Override
public void onCreate(Bundle savedInstanceState) {
(...略...)
    // 受信したインテントからメッセージを取得
    Intent intent = getIntent();
    String msg = intent.getStringExtra("MESSAGE");

    // メッセージをToastで表示
    if (msg != null)
    	Toast.makeText(this, ""+msg, Toast.LENGTH_LONG).show();
}

ボタンを押すとショートカットを作成したことを知らせるToastが表示されます。
作成された2つのショートカットをHOME画面からタップするとそれぞれ異なるメッセージが表示されます。


なお、サンプルプログラムは下記より入手することができます。
http://techbooster.googlecode.com/svn/trunk/makeShortcut/

関連する記事:

Sponsored Link

Comments are closed.

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です