【Android】 クリップボードへのコピー
Androidでクリップボードにテキストを追加してコピーできるようにするにはClipboardManagerを使う。
ClipboardManagerはAPI 11(~3.0)までで使われていたものとAPI11から推奨となったもので2つある。
// API 10(2.3.*)まで import android.text.ClipboardManager ClipboardManager clipboardManager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); clipboardManager.setText("text"); // API 11(3.0)から import android.content.ClipboardManager ClipboardManager clipboardManager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); clipboardManager.setPrimaryClip(ClipData.newPlainText("label", "text"));
API 11からは単にsetText()を呼ぶのではなくClipDataを使用して複雑なデータも扱えるようになった。
ちなみにAP11から推奨となっている方のClipboardManagerををAndroid2.3以下で動かすと下のようなエラーが出てクラッシュする。
E/AndroidRuntime(3072): FATAL EXCEPTION: main E/AndroidRuntime(3072): java.lang.NoClassDefFoundError: android.content.ClipboardManager E/AndroidRuntime(3072): at xxx.xxx.xxx(xxx.java:yyy) E/AndroidRuntime(3072): at android.view.View.performClick(View.java:2552) E/AndroidRuntime(3072): at android.view.View$PerformClick.run(View.java:9229) E/AndroidRuntime(3072): at android.os.Handler.handleCallback(Handler.java:587) E/AndroidRuntime(3072): at android.os.Handler.dispatchMessage(Handler.java:92) E/AndroidRuntime(3072): at android.os.Looper.loop(Looper.java:138) E/AndroidRuntime(3072): at android.app.ActivityThread.main(ActivityThread.java:3701) E/AndroidRuntime(3072): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime(3072): at java.lang.reflect.Method.invoke(Method.java:507) E/AndroidRuntime(3072): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878) E/AndroidRuntime(3072): at com.android.internal.os.ZygoteInit.fmain(ZygoteInit.java:636) E/AndroidRuntime(3072): at dalvik.system.NativeStart.main(Native Method)