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

ClipboardManagerでUriをコピーする

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

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

Uriのコピーは、WEBアドレスだけでなく、端末内のコンテンツの場所などもコピーできる為、非常に強力な機能です。

詳細は以下から。

Uriのコピー

UriのコピーはClipDataクラスのnewUri (ContentResolver resolver, CharSequence label, Uri uri)メソッドを使用して、ClipDataオブジェクトを作成してから、システムのクリップボードに作成したClipDataオブジェクトをセットします。(ClipDataの詳細はこちら)

//外部メモリから画像のUriを取得
Uri uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

//ClipDataオブジェクトの作成
ClipData cd = ClipData.newUri(getContentResolver(), "Uri", uri);

//システムのクリップボードオブジェクトを取得
ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

//Uriをクリップボードへコピー
cm.setPrimaryClip(cd);

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

コピーしたUriを取り出すにはClipData.ItemクラスのgetUriメソッドを使用します。

Uriには様々なコンテンツのMIME typeがある為、クリップボードからの取得時に、目的のMIME typeであるかをしっかりと確認しなければなりません。

以下のサンプルはUriの取得からMIME typeの確認までを記載しています。

//システムのクリップボードオブジェクトを取得
ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

//クリップボードからUriを取得
Uri uri = cm.getPrimaryClip().getItemAt(0).getUri();

//ContentResolverを取得
ContentResolver cr = getContentResolver();

//クリップボードから取得したUriのMime Typeを取得
String mimeType = cr.getType(uri);

if(mimeType != null){
    //MIME_TYPEが取得したいデータのものであるか確認
    if(mimeType.equals(MediaStore.Images.Media.CONTENT_TYPE)){
        Cursor pasteCursor = cr.query(uri, null, null, null, null);
        if(pasteCursor != null){
            if(pasteCursor.moveToFirst()){
                //データ取得処理
            }
        }
    }
}

15行目のMIME_TYPEの確認は画像データ用のMIME_TYPE定数を使用しています。

以下に画像以外の代表的なMIME_TYPEを紹介します。

MediaStore.Audio.Media.CONTENT_TYPE オーディオファイルのMIME_TYPEです
MediaStore.Video.Media.CONTENT_TYPE ビデオファイルのMIME_TYPEです

関連する記事:

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