How To Copy / Paste Clipboard Data In Android

This article will show you how to copy data to android system clipboard and how to paste android system clipboard data to target text view.

1. Copy Data To System Clipboard Steps.

  1. Get system android.content.ClipboardManager object.
    final android.content.ClipboardManager clipboardManager = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
  2. Create a android.content.ClipData object and set source data in it
    ClipData clipData = ClipData.newPlainText("Source Text", srcText);
  3. Set the clip data as clipboard manager’s primary clip, then the data has been copied to system clipboard.
    clipboardManager.setPrimaryClip(clipData);
    

2. Paste Data From System Clipboards Steps.

  1. Get clipboard manager as in section 1.
  2. Get primary clip data from the clipboard manager.
    ClipData clipData = clipboardManager.getPrimaryClip();
  3. Get clip data item and text, then set text to target textview or somewhere else.

3. Android Clipboard Management Example.

If you can not watch the above video, you can see it on the youtube URL https://youtu.be/QQ-jOK5x-9A

There are three buttons in this example. Click the first button will copy above input text to android system clipboard. Click the second button will paste the data in clipboard to below text view. Click the third button will clear the clipboard data.

4. Main Activity.

ClipBoardActivity.java

package com.dev2qa.example.clipboard;

import android.content.ClipData;
import android.content.ClipData.Item;
import android.content.ClipboardManager;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.dev2qa.example.R;

public class ClipBoardActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_clip_board);

        setTitle("dev2qa.com - Android Clipboard Example.");

        // Get source input edittext and destination output textview.
        final EditText srcEditText = (EditText)findViewById(R.id.clipboard_source_edit_text);
        final TextView destTextView = (TextView)findViewById(R.id.clipboard_destination_text);

        // Get clipboard manager object.
        Object clipboardService = getSystemService(CLIPBOARD_SERVICE);
        final ClipboardManager clipboardManager = (ClipboardManager)clipboardService;

        // This is the copy button.
        Button copyButton = (Button)findViewById(R.id.clipboard_copy_button);
        copyButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String srcText = srcEditText.getText().toString();

                // Create a new ClipData.
                ClipData clipData = ClipData.newPlainText("Source Text", srcText);
                // Set it as primary clip data to copy text to system clipboard.
                clipboardManager.setPrimaryClip(clipData);
                // Popup a snackbar.
                Snackbar snackbar = Snackbar.make(v, "Source text has been copied to system clipboard.", Snackbar.LENGTH_LONG);
                snackbar.show();
            }
        });

        // This is the paste button.
        Button pasteButton = (Button)findViewById(R.id.clipboard_paste_button);
        pasteButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // Get clip data from clipboard.
                ClipData clipData = clipboardManager.getPrimaryClip();
                // Get item count.
                int itemCount = clipData.getItemCount();
                if(itemCount > 0)
                {
                    // Get source text.
                    Item item = clipData.getItemAt(0);
                    String text = item.getText().toString();

                    // Set the text to target textview.
                    destTextView.setText(text);

                    // Show a snackbar to tell user text has been pasted.
                    Snackbar snackbar = Snackbar.make(v, "Paste system clipboard text to target text view.", Snackbar.LENGTH_LONG);
                    snackbar.show();
                }
            }
        });

        // Click this button to clear system clipboard content.
        Button emptyClipboardButton = (Button)findViewById(R.id.clipboard_empty_button);
        emptyClipboardButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ClipData clipData = ClipData.newPlainText("", "");
                clipboardManager.setPrimaryClip(clipData);

                Toast.makeText(getApplicationContext(), "Clipboard data has been cleared.", Toast.LENGTH_LONG).show();
            }
        });
    }
}

5. Activity Layout Xml File.

activity_clip_board.xml

<TableLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="50dp">

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp">

        <TextView
            android:layout_column="0"
            android:layout_weight="1"
            android:text="Source Text:" />
        <EditText
            android:layout_weight="5"
            android:layout_span="2"
            android:id="@+id/clipboard_source_edit_text"
            android:hint="Input source text."/>

    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp">

        <Button
            android:id="@+id/clipboard_copy_button"
            android:layout_weight="1"
            android:text="Copy Text" />

        <Button
            android:id="@+id/clipboard_paste_button"
            android:layout_weight="1"
            android:text="Paste Text" />

        <Button
            android:id="@+id/clipboard_empty_button"
            android:layout_weight="1"
            android:text="Empty Clipboard" />
    </TableRow>

    <TableRow
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="8dp">

        <TextView
            android:layout_column="0"
            android:layout_weight="1"
            android:text="Dest Text:" />
        <TextView
            android:layout_weight="5"
            android:layout_span="2"
            android:id="@+id/clipboard_destination_text"
            android:textSize="20dp"/>

    </TableRow>
</TableLayout>

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.