Portapapeles en Android

El Portapapeles de Android copia y pega diferentes tipos de datos, como strings de texto, imágenes, datos de flujo binario y otros tipos de datos complejos. Portapapeles realiza las operaciones de copiar y pegar dentro de la misma aplicación y entre varias aplicaciones que han implementado el marco del portapapeles. El portapapeles tiene una limitación en la cantidad de objetos de clip que puede contener a la vez. El portapapeles solo puede contener un objeto a la vez. Si se coloca un objeto en el portapapeles, se suelta el objeto que estaba previamente en el portapapeles. El objeto de clip puede admitir tres tipos de datos:

  • Texto: una string se puede colocar directamente en el objeto de clip y luego en el portapapeles. Luego podemos obtener el objeto de clip del portapapeles y pegar la string en los campos de texto o almacenamiento de la aplicación.
  • URI: se utiliza para copiar datos complejos del proveedor de contenido. Un objeto URI puede colocarse en un objeto de clip y luego cargarse en el portapapeles. Para realizar una operación de pegado, el objeto de clip debe resolverse en la fuente, como un proveedor de contenido.
  • Intención: se debe crear un objeto de intención, colocarlo en un objeto de clip y cargarlo en el portapapeles. Se puede realizar una acción de pegado, similar al texto.

Implementación paso a paso

Para hacer una aplicación que almacene algunos datos en el portapapeles y los derive en Android, seguimos los siguientes pasos:

Guardar en el Portapapeles:

kotlin

Clipboard in Android Sample GIF

Paso 1: Crear un nuevo proyecto

Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Kotlin como lenguaje de programación.

Paso 2: trabajar con el archivo activity_main.xml

Vaya al archivo activity_main.xml que representa la interfaz de usuario de la aplicación. Cree un EditText donde proporcionaremos el texto que se guardará en el portapapeles y un Botón para realizar la acción de guardar. actividad_principal.xml

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
  
    <!--Text must be entered here-->
    <EditText
        android:id="@+id/txtCopy"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/btnCopy"
        android:layout_centerHorizontal="true"
        android:hint="Type something..." />
  
    <!--Text entered in the above field gets copied to 
        Clipboard on this button click-->
    <Button
        android:id="@+id/btnCopy"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Copy to Clipboard" />
  
</RelativeLayout>

Paso 3: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del  archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

import android.content.ClipData
import android.content.ClipboardManager
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
          
        // Declaring the edit text and button from the layout file
        val copyTxt = findViewById<EditText>(R.id.txtCopy)
        val copyBtn = findViewById<Button>(R.id.btnCopy)
  
        // Initializing the ClipboardManager and Clip data
        val clipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
        var clipData: ClipData
  
        // Action when the copy button is clicked
        copyBtn.setOnClickListener {
  
            // Text from the edit text is stored in a val
            val txtCopy = copyTxt!!.text.toString()
  
            // clip data is initialized with the text variable declared above
            clipData = ClipData.newPlainText("text", txtCopy)
  
            // Clipboard saves this clip object
            clipboardManager.setPrimaryClip(clipData)
  
            // A toast is shown for user reference that the text is copied to the clipboard
            Toast.makeText(applicationContext, "Copied to Clipboard", Toast.LENGTH_SHORT).show()
        }
    }
}

Salida: ejecutar en el emulador

Pegar desde el Portapapeles:

Clipboard in Android Sample GIF

Paso 1: trabajar con el archivo activity_main.xml

actividad_principal.xml

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
  
    <!--Text from the clip object will be shown here*-->
    <TextView
        android:id="@+id/txtShow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@id/btnShow"
        android:layout_centerHorizontal="true"
        android:hint="Clipboard Data" />
  
    <!--*on this button click-->
    <Button
        android:id="@+id/btnShow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Show Clipboard Data" />
  
</RelativeLayout>

Paso 2: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del  archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

import android.content.ClipboardManager
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declare the textview and button from the layout file
        val pasteTxt = findViewById<TextView>(R.id.txtShow)
        val btnPaste = findViewById<Button>(R.id.btnShow)
  
        // Declaring the clipboard manager
        val clipboardManager = getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
  
        // Action on paste button click
        btnPaste.setOnClickListener {
  
            // Storing the clip data in a variable
            val pData = clipboardManager.primaryClip
  
            // Retrieving the items
            val item = pData!!.getItemAt(0)
  
            // item is converted to string and stored in a variable
            val txtPaste = item.text.toString()
  
            // Textview is set as txtPaste string
            pasteTxt!!.text = txtPaste
  
            // Toast for user reference
            Toast.makeText(applicationContext, "Pasted from Clipboard", Toast.LENGTH_SHORT).show()
        }
    }
}

Salida: ejecutar en el emulador

Publicación traducida automáticamente

Artículo escrito por aashaypawar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *