2011年6月29日水曜日

ショートカットへの登録方法

今まで、ショートカットの存在を忘れておりました。
通話履歴で、発信・着信のボタンをわざわざウィジェットで用意していましたが・・・ただのボタンなんで、ショートカットで十分でした(アセアセ

と、いうことでアプリに起動用のショートカットを作成する方法を書いておきます。

Manifest部分

    
        
        
    

Manifest部分は、ホーム画面長押し → ホーム画面に追加 ダイアログ → ショートカット で表示されるショートカットを選択するダイアログでの表示を設定しています。
android:name ・・・ ショートカットの内容を定義したクラス名
android:label ・・・ ダイアログ内でのラベル名
android:icon ・・・ ダイアログ内でのアイコン
label,iconは設定しなければアプリ自体のアイコンとアプリ名になります。

IncomingShortcut.Class部分(Activityで実装)
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;

public class IncomingShortcut extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        // ショートカットの内容 インテントを発行
        Intent shortcutIntent = new Intent(getApplicationContext(), "実行するClass(***.class)を記述");
        // 何か渡したい場合は、putExtraで渡す(起動したいタブIDとか
        shortcutIntent.putExtra("****", *);

        // ホーム画面に設置した場合のショートカットの登録内容
        Intent intent = new Intent();
        intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        Parcelable iconResource = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.call_incoming);
        // ホーム画面に設置した場合に表示されるアイコンの設定
        intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
        // ホーム画面に設置した場合に表示されるラベル名の設定
        intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.incoming));
  
        setResult(RESULT_OK, intent);
        finish();
    }

}
Class部分は、実際にホームに置いた場合の内容を書くみたいです。通話履歴では 発信履歴ボタンと着信履歴ボタンの2つを置いて、表示するタブを変えるためshortcutIntent.putExtraで表示するタブのIDをわたしてます。あと、Activityですので、finish()を呼び出してすぐに終了させてます。

これで、ホーム画面に設置できるショートカットができます。ショートカットにすることで ドックを変更できるホームランチャーなら ドックへの設置も行えるようになります。

(追記)
上のコードだとホームランチャーによっては、ドックへショートカットを置いたときにアイコンがアプリアイコンに変わってしまうことがあるみたいです。
なんで、最初にショートカット作成かどうかを判断するようにして、作成以外の場合は新しいIntentでAvitityを呼び出すようにしました。

0 件のコメント:

コメントを投稿