Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

안드로이드 앱에서 프로그래밍 방식으로 텍스트 복사·붙여넣기 구현하기 (ClipboardManager 완전 정리)

개요

이 튜토리얼에서는 안드로이드 앱에서 프로그래밍 방식으로 텍스트를 클립보드에 복사(Ctrl+C)하고, 다시 붙여넣는 기능을 구현하는 방법을 단계별로 살펴봅니다. 핵심은 안드로이드에서 제공하는 ClipboardManagerClipData 클래스를 활용하는 것입니다.

Step 1 — 새 프로젝트 생성

Android Studio에서 File → New Project를 선택한 뒤, 필요한 정보를 모두 입력하여 새 프로젝트를 생성합니다.

Step 2 — 레이아웃 작성 (res/layout/activity_main.xml)

아래 코드를 res/layout/activity_main.xml에 추가합니다. 화면에는 텍스트 입력용 EditText, 복사 버튼, 붙여넣기 버튼, 결과를 표시할 TextView가 배치됩니다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    tools:context=".MainActivity">
    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Enter your text"/>
    <Button
        android:onClick="CopyText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:text="Copy text"/>
    <Button
        android:onClick="PasteText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:text="Paste text" />
    <TextView
        android:id="@+id/textView"
        android:layout_marginTop="30dp"
        android:textSize="16sp"
        android:textStyle="bold"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

Step 3 — 메인 액티비티 구현 (src/MainActivity.java)

다음으로 src/MainActivity.java에 아래 코드를 추가합니다. CopyText() 메서드는 EditText에 입력된 텍스트를 ClipData.newPlainText()로 감싸 클립보드에 저장하고, PasteText() 메서드는 클립보드의 첫 번째 아이템을 꺼내 TextView에 표시합니다.

import androidx.appcompat.app.AppCompatActivity;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
    EditText editText;
    TextView textView;
    ClipboardManager clipboardManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText = findViewById(R.id.editText);
        textView = findViewById(R.id.textView);
    }
    public void CopyText(View view) {
        String text = editText.getText().toString();
        if (!text.isEmpty()) {
            clipboardManager = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
            ClipData clipData = ClipData.newPlainText("key", text);
            clipboardManager.setPrimaryClip(clipData);
            Toast.makeText(getApplicationContext(), "Copied", Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), "No text to be copied", Toast.LENGTH_SHORT).show();
        }
    }
    public void PasteText(View view) {
        ClipData clipData = clipboardManager.getPrimaryClip();
        assert clipData != null;
        ClipData.Item item = clipData.getItemAt(0);
        textView.setText(item.getText().toString());
        Toast.makeText(getApplicationContext(), "Text is being Pasted", Toast.LENGTH_SHORT).show();
    }
}

Step 4 — 매니페스트 확인 (androidManifest.xml)

클립보드 사용에는 특별한 권한이 필요하지 않으므로, 기본 매니페스트 파일을 그대로 사용하면 됩니다. 참고용으로 전체 코드는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android" package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

앱 실행 및 결과 확인

이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바의 Run(실행) 아이콘을 클릭하세요. 실행 옵션 목록에서 자신의 모바일 기기를 선택하면, 기본 화면이 기기에 표시됩니다.

안드로이드 앱에서 프로그래밍 방식으로 텍스트 복사·붙여넣기 구현하기 (ClipboardManager 완전 정리)


안드로이드 앱에서 프로그래밍 방식으로 텍스트 복사·붙여넣기 구현하기 (ClipboardManager 완전 정리)

마무리 정리

핵심 흐름을 요약하면 다음과 같습니다.

getSystemService(Context.CLIPBOARD_SERVICE)로 ClipboardManager 인스턴스를 가져옵니다.
ClipData.newPlainText(label, text)로 복사할 데이터를 생성합니다.
setPrimaryClip()으로 클립보드에 저장하고, 붙여넣을 때는 getPrimaryClip()getItemAt(0)으로 값을 읽어오면 됩니다.

이 방식을 응용하면 링크 공유 버튼, 코드 스니펫 복사 기능 등 다양한 UX를 손쉽게 구현할 수 있습니다.