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

ClipboardManagerでIntentをコピーする

3月 29, 2011   //   by kei_i_t   //   アプリケーション  //  No Comments

ClipboardManagerを使用してテキストのコピーと貼り付けを行う(Android3.0版)ではテキストのコピーを紹介しましたが、今回はIntentをクリップボードへコピーする方法を紹介します。

Intentのコピーはユーザーの行動履歴などを保存しておきたい場合に便利です。

Intentのコピーの動きを大まかに把握して頂くために、Spinnerから起動したいIntentを指定して、ボタン押下でコピーしたIntentを起動するサンプルを作成しています(サンプルはこちらからSVNなどでダウンロードして下さい。)

詳細は以下から。

Intentのコピー

Intentのコピーはテキストのコピーと同様にClipDataオブジェクトを作成して行います。(ClipDataの詳細はこちら)

Intent保存用のClipDataオブジェクトの生成はClipDataクラスのnewIntent (CharSequence label, Intent intent)メソッドを使用します。

以下はカメラのIntentをクリップボードへコピーするサンプルです。

//コピーするIntentを作成
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
//システムのクリップボードオブジェクトを取得
ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
//Intentのクリップデータを作成
ClipData cd = ClipData.newIntent("Intent", intent);
//Intentをクリップボードへコピー
cm.setPrimaryClip(cd);

クリップボードからIntentを取り出す

コピーしたIntentをクリップボードから取得するにはClipData.ItemクラスのgetIntentメソッドを使用します。

以下はクリップボードからIntentを取得して、取得したIntentからActivityを起動するサンプルです。

//システムのクリップボードオブジェクトを取得
ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
//クリップボードからコピーされているIntentを取得
Intent intent = cm.getPrimaryClip().getItemAt(0).getIntent();
//Intentの取得正否確認
if(intent != null){
    //Intentを起動
    startActivity(intent);
}else{
    Toast.makeText(getApplicationContext(), "Intentを選択してください", Toast.LENGTH_SHORT);
}

クリップボードは何が格納されているかわからないので、6行目のようにIntentが作成できているかどうかを判定する必要があります。

関連する記事:

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本です