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