본문 바로가기
안드로이드 자바

[Java][Android] ClipboardManager 사용해서 복사 및 붙여넣기 구현하기

by teamnova 2025. 1. 12.
728x90

안녕하세요

오늘은 ClipboardManager를 사용해서 텍스트를 복사 및 붙여넣기 하는 기능을 구현해보도록 하겠습니다.

 

전체 코드입니다.

 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:padding="20dp"
  android:layout_width="match_parent"
  android:layout_height="match_parent">

    <EditText
      android:layout_marginTop="50dp"
      android:id="@+id/editText"
      android:hint="텍스트를 입력해주세요"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

    <Button
      android:layout_marginTop="20dp"
      android:id="@+id/btnCopy"
      android:text="복사하기"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>

    <Button
      android:layout_marginTop="10dp"
      android:id="@+id/btnPaste"
      android:text="붙여넣기"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"/>
</LinearLayout>

 

 

MainActivity.java

public class MainActivity extends AppCompatActivity {

  private EditText editText;
  private Button btnCopy, btnPaste;
  private ClipboardManager clipboardManager;

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


    editText = findViewById(R.id.editText);
    btnCopy = findViewById(R.id.btnCopy);
    btnPaste = findViewById(R.id.btnPaste);

    clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);

    // 텍스트 복사하기
    btnCopy.setOnClickListener(view -> {
      String textToCopy = editText.getText().toString();
      ClipData clipData = ClipData.newPlainText("text", textToCopy);
      clipboardManager.setPrimaryClip(clipData);
      Toast.makeText(MainActivity.this, "텍스트가 복사되었습니다!", Toast.LENGTH_SHORT).show();
    });

    // 텍스트 붙여넣기
    btnPaste.setOnClickListener(view -> {
      if (clipboardManager.hasPrimaryClip() && clipboardManager.getPrimaryClipDescription().hasMimeType("text/plain")) {
        ClipData.Item item = clipboardManager.getPrimaryClip().getItemAt(0);
        editText.setText(item.getText().toString());
        Toast.makeText(MainActivity.this, "텍스트가 붙여넣기 되었습니다!", Toast.LENGTH_SHORT).show();
      } else {
        Toast.makeText(MainActivity.this, "클립보드에 복사된 텍스트가 없습니다!", Toast.LENGTH_SHORT).show();
      }
    });


  }

}

 

ClipboardManager 선언 : clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);

텍스트 복사 : clipboardManager.setPrimaryClip(clipData);

텍스트 붙여넣기 : clipboardManager.getPrimaryClip().getItemAt(0).getText();

데이터 유효성 검사 : if (clipboardManager.hasPrimaryClip())를 사용해 클립보드 데이터가 있는지 확인

 

해당 기능을 활용하여 메모 앱, 채팅 앱 등 다양하게 활용이 가능합니다.

 

시연 영상입니다.