Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Copy/Paste text chương trình (Clipboard) trong Android Kotlin

Hướng dẫn này minh họa cách copy và paste text theo chương trình (Clipboard) trong ứng dụng Android sử dụng Kotlin.

Bước 1: Tạo dự án mới

Mở Android Studio, chọn File → New Project và điền thông tin cần thiết.

Bước 2: Thiết kế giao diện (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:gravity="center_horizontal"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="70dp"
        android:text="Tutorials Point"
        android:textAlignment="center"
        android:textColor="@android:color/holo_green_dark"
        android:textSize="32sp"
        android:textStyle="bold" />

    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="100dp"
        android:hint="Nhập văn bản" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:onClick="copyText"
        android:text="Copy text" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="5dp"
        android:onClick="pasteText"
        android:text="Paste text" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:textColor="@android:color/holo_red_dark"
        android:textSize="24sp"
        android:textStyle="bold" />

</LinearLayout>

Bước 3: Viết code 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.EditText
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    lateinit var editText: EditText
    lateinit var textView: TextView
    lateinit var clipboardManager: ClipboardManager

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"

        editText = findViewById(R.id.editText)
        textView = findViewById(R.id.textView)
    }

    fun copyText(view: View) {
        val text = editText.text.toString()
        if (text.isNotEmpty()) {
            clipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
            val clipData = ClipData.newPlainText("key", text)
            clipboardManager.setPrimaryClip(clipData)
            Toast.makeText(applicationContext, "Đã copy", Toast.LENGTH_SHORT).show()
        } else {
            Toast.makeText(applicationContext, "Không có text để copy", Toast.LENGTH_SHORT).show()
        }
    }

    fun pasteText(view: View) {
        val clipData: ClipData = clipboardManager.primaryClip!!
        val item: ClipData.Item = clipData.getItemAt(0)
        textView.text = item.text.toString()
        Toast.makeText(applicationContext, "Đang paste text", Toast.LENGTH_SHORT).show()
    }
}

Bước 4: Cấu hình AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.q11">

    <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>

Chạy ứng dụng

Kết nối thiết bị, nhấn Run. Nhập text vào EditText, nhấn "Copy text" → Toast "Đã copy". Nhấn "Paste text" → TextView hiển thị nội dung đã copy.

Giải thích ClipboardManager

  • ClipboardManager - Quản lý clipboard hệ thống
  • ClipData.newPlainText(label, text) - Tạo clip data dạng text thuần
  • setPrimaryClip() - Đặt dữ liệu vào clipboard
  • primaryClip.getItemAt(0).text - Lấy text từ clipboard

Xử lý ClipData phức tạp (HTML, Intent, URI)

// Copy HTML
val clipData = ClipData.newHtmlText("label", htmlText, plainText)

// Copy Intent
val clipData = ClipData.newIntent("label", intent)

// Copy URI
val clipData = ClipData.newRawUri("label", uri)

// Kiểm tra loại dữ liệu trước khi paste
val clipData = clipboardManager.primaryClip
if (clipData != null && clipData.description.hasMimeType(MIMETYPE_TEXT_PLAIN)) {
    val text = clipData.getItemAt(0).text.toString()
}