Androidアプリで貼付け機能を実装する方法についてまとめます.
まず、ClipboardManagerとpasteDataをFragmentのフィールドに宣言します.
1 2 3 4 5 6 7 8 9 |
ClipboardManager clipboard; String pasteData = "";//Paste結果の格納用 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { clipboard = (ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE); //その他の処理 } |
あとは、貼付け用のボタンを押した時等、貼付けたい時に以下のような処理を行う.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@Override public void onClick(View v) { Log.d(TAG, "hasPrimaryClip : " + clipboard.hasPrimaryClip()); Log.d(TAG, "mimeType : " + clipboard.getPrimaryClipDescription().getMimeType(0)); // クリップボードに貼付けることが出来る値が入っているかを確認する. // ここではtext/plain(通常のテキスト)のみを貼付けるようにしている. if (clipboard.hasPrimaryClip() && (clipboard.getPrimaryClipDescription().hasMimeType("text/plain"))) { CharSequence textToPaste = clipboard.getPrimaryClip().getItemAt(0).getText(); // 貼付ける文字列を取得 Editable text = textView.getEditableText(); // 貼付け先を取得 text.clear(); text.append(textToPaste); // 貼付けを行う. Log.d(TAG, "textToPaste: " + textToPaste); } } |
なお、Android標準の貼付け機能(テキストエリアを長押しすることによって出てくる貼付けボタン)を有効にするには、TextViewを選択可能にする必要が有ります.
JavaのコードないでsetTextIsSelectable(true)を呼び出すか、XMLに
android:textIsSelectable=“true”を指定する必要があります.