ตัวอย่างนี้สาธิตวิธี คัดลอก (Copy) และวาง (Paste) ข้อความไปยัง Clipboard ใน Android โดยใช้ ClipboardManager และ ClipData
ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่
Android Studio → New Project → Empty Activity
ขั้นตอนที่ 2: Layout (activity_main.xml)
<?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_horizontal"
android:padding="24dp"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="70dp"
android:text="Clipboard Demo"
android:textAlignment="center"
android:textColor="@android:color/holo_green_dark"
android:textSize="28sp"
android:textStyle="bold" />
<EditText
android:id="@+id/etInput"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="40dp"
android:hint="Enter text to copy" />
<Button
android:id="@+id/btnCopy"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Copy Text" />
<Button
android:id="@+id/btnPaste"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:text="Paste Text" />
<TextView
android:id="@+id/tvPasted"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:textColor="@android:color/holo_red_dark"
android:textSize="20sp"
android:textStyle="bold" />
</LinearLayout>
ขั้นตอนที่ 3: โค้ดหลัก (MainActivity.kt)
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.os.Bundle
import android.view.View
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
private lateinit var etInput: EditText
private lateinit var tvPasted: TextView
private lateinit var clipboardManager: ClipboardManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
title = "Clipboard Demo"
etInput = findViewById(R.id.etInput)
tvPasted = findViewById(R.id.tvPasted)
clipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
findViewById
🔧 ClipData ประเภทอื่นๆ
| Method | ใช้สำหรับ |
|---|---|
newPlainText(label, text) |
ข้อความธรรมดา (Label ใช้ระบุใน UI) |
newUri(resolver, label, uri) |
Uri (ไฟล์, Content Provider) |
newIntent(label, intent) |
Intent (Share, Deep link) |
newHtmlText(label, html) |
HTML Text (API 24+) |
📋 ClipboardManager Callback (API 26+)
clipboardManager.addPrimaryClipChangedListener {
// เรียกเมื่อ Clipboard เปลี่ยน
val newText = clipboardManager.primaryClip?.getItemAt(0)?.text
println("Clipboard changed: $newText")
}
// ลบ Listener เมื่อไม่ใช้
clipboardManager.removePrimaryClipChangedListener(listener)
ขั้นตอนที่ 4: AndroidManifest.xml
Manifest มาตรฐาน ไม่ต้อง Permission พิเศษ
ทดสอบ
- พิมพ์ข้อความในช่อง Input
- กด Copy → Toast "Copied to clipboard"
- กด Paste → ข้อความแสดงใน TextView ด้านล่าง
- ลอง Copy จากแอปอื่น (Browser, Notes) → Paste ในแอปนี้ได้