テキストをクリップボードにコピー

AndroidでクリップボードにアクセスしたいときはClipboardManagerを使います。

ClipboardManagerは直接インスタンス化できないのでContext#getSystemServiceから取得できます。

もしクリップボードに何かコピーするメソッドを定義するとしたら次のようになります。

@TargetApi(Build.VERSION_CODES.HONEYCOMB)
private void copyToClipboard()
{
    String copiedStr = "Hello!!";
    ClipboardManager clipboard 
    = (ClipboardManager) getContext().getSystemService(
           Context.CLIPBOARD_SERVICE);
           
    if(Build.VERSION.SDK_INT >= 11){
       ClipData clipData = ClipData.newPlainText("LABEL", copiedStr);
       clipboard.setPrimaryClip(clipData);
           ///テキストをコピー
    }else{
       clipboard.setText(copiedStr);
           ///テキストをコピー
    }
}

ClipboardManagerはAPIレベル11以上からClipDataをサポートするようになったので11未満の場合はsetTextを代わりに使っています。

また、Lintのエラーを無視するため、関数にTargetApiアノテーションをつけています。

ここでは紹介していませんが、ClipboardManagerはテキストだけでなく、URLやIntentのコピーもサポートしているみたいです。詳しくはレファレンスのCopy and Pasteに載っています。

以上、クリップボードへのコピーでした。では、また!

関連項目
プライバシーポリシー