LoginSignup
20
14

More than 5 years have passed since last update.

【Android】クリップボードにコピーする

Last updated at Posted at 2018-01-15

クリップボードにコピーする

これはOS標準の挙動だが、文字列に対して長押下の選択操作を行えば、「クリップボードにコピーするかどうか」のUIは、画面に表示される。

以下のような、お馴染みのやつだ。

Screenshot_2018-02-16-21-31-49.png

ただ、そうだとしても、アプリ内での特定操作で「クリップボードにコピーする」機能を実現したいこともあるだろう。

サンプルコード

そのまんま、「ClipboardManager(クリップボード・マネージャー)」という名前のクラスが存在するので、これを使えば解決だ。

以下のようにして、使っている。

    /**
     * Copy to clipboard.
     *
     * @param context the context to use
     * @param label user-visible label for the clip data
     * @param text the actual text in the clip
     * @return result
     */
    public static void copyToClipboard(Context context, String label, String text) {
        // copy to clipboard
        ClipboardManager clipboardManager =
                (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE);
        if (null == clipboardManager) {
            return;
        }
        clipboardManager.setPrimaryClip(ClipData.newPlainText(label, text));
    }

「ClipData.newPlainText」の引数「text」が、コピー対象の文字列だ。

で、「label」なのだが、これは必要な開発者しか参照しないデータなので、私はいつも「""(空文字)」を設定している。

これでまったく問題ない。

ちなみに「label」を設定すると、

ClipData clipData = ClipData.newPlainText(label, text);
clipData.getDescription();

このように、「Description」として取得できるので、アプリ内でコピー後に何らかの処理をしたい場合に有効な手段だ。

(※「minSdkVersion 21:Lollipop」を前提としたサンプルコード)

参考記事

サンプルアプリ

以下の電卓アプリで「計算結果」をタップすると、上記サンプルコードの処理が走るようになっているので、実際に他アプリで貼り付けて、参考にしてみてほしい。

ic_launcher.png

シンプルな電卓は気まぐれに着せ替えする -計算過程表示や共有など無料の計算機- :CALCBOSS

【動作環境】
Android OS 5.0以上

Made in Japan.
© CUTBOSS
Producer & Director, Boss of the Barber.
Lead Programmer & Designer, Boss of the Barber.

20
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
14