Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีก็อปปี้ข้อความแบบโปรแกรม (Ctrl+C) ในแอป Android ด้วย Kotlin

ตัวอย่างนี้สาธิตวิธี คัดลอก (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 พิเศษ

ทดสอบ

  1. พิมพ์ข้อความในช่อง Input
  2. กด Copy → Toast "Copied to clipboard"
  3. กด Paste → ข้อความแสดงใน TextView ด้านล่าง
  4. ลอง Copy จากแอปอื่น (Browser, Notes) → Paste ในแอปนี้ได้