Estoy creando una aplicación para Android y quiero copiar el valor de texto de un widget EditText. Es posible que el usuario presione a Menu+A
continuación Menu+C
para copiar el valor, pero ¿cómo iba a hacerlo mediante programación?
231
Respuestas:
ClipboardManager#setPrimaryClip
Método de uso :ClipboardManager
Referencia APIfuente
import android.content.ClipboardManager;
label
?Context context = getApplicationContext(); Toast.makeText(context, "text copied", Toast.LENGTH_LONG).show();
Entonces, todos están de acuerdo en cómo se debe hacer esto, pero como nadie quiere dar una solución completa, aquí va:
Supongo que tiene algo como lo siguiente declarado en manifiesto:
fuente
label
innewPlainText
? La documentación dicelabel User-visible label for the clip data.
. Pero cuando eslabel
visible para el usuario? ¿Y qué tipo de valor / nombre debo ponerlabel
?Google te lleva a android.content.ClipboardManager y puedes decidir, como lo hice yo, que el Portapapeles no está disponible en API <11, porque la página de documentación dice "Desde: API Nivel 11".
En realidad, hay dos clases, la segunda que extiende la primera: android.text.ClipboardManager y android.content.ClipboardManager.
android.text.ClipboardManager existe desde la API 1, pero solo funciona con contenido de texto.
android.content.ClipboardManager es la forma preferida de trabajar con el portapapeles, pero no está disponible en el nivel API <11 (Honeycomb).
Para obtener cualquiera de ellos, necesita el siguiente código:
Pero para API <11 tienes que importar
android.text.ClipboardManager
y para API> = 11android.content.ClipboardManager
fuente
puedes probar esto ...
fuente
Aquí hay un código para implementar algunas funciones de copiar y pegar desde EditText (gracias a Warpzit para la verificación de versiones). Puede conectarlos al evento onclick de su botón.
fuente
Actualización de la biblioteca de soporte de Android
A partir de Android Oreo, la biblioteca de soporte solo se reduce a la API 14. La mayoría de las aplicaciones más nuevas probablemente también tengan una API mínima de 14, y por lo tanto no deben preocuparse por los problemas con la API 11 mencionados en algunas de las otras respuestas. Gran parte del código se puede limpiar. (Pero vea mi historial de edición si aún admite versiones anteriores).
Copiar
Pegar
Estoy agregando este código como una bonificación, porque copiar / pegar generalmente se realiza en pares.
Notas
android.content.ClipboardManager
versión en lugar de la anteriorandroid.text.ClipboardManager
. Lo mismo paraClipData
.context.getSystemService()
.null
. Puede verificar cada uno si lo encuentra más legible.fuente
Para habilitar el copiar / pegar estándar para TextView, U puede elegir uno de los siguientes:
Cambio en el archivo de diseño: agregue la propiedad siguiente a su TextView
En su clase de Java, escriba esta línea dos, establezca la gramática.
myTextView.setTextIsSelectable(true);
Y mantenga presionado el TextView para ver la barra de acción copiar / pegar.
fuente
E importar
import android.content.ClipboardManager;
fuente
@FlySwat ya dio la respuesta correcta, solo estoy compartiendo la respuesta completa:
Utilice el método ClipboardManager.setPrimaryClip ( http://developer.android.com/reference/android/content/ClipboardManager.html ):
Donde
label
hay una etiqueta visible para el usuario para los datos del clip ytext
es el texto real en el clip. Según los documentos oficiales .Es importante usar esta importación:
fuente
Aquí está mi código de trabajo
fuente
Para Kotlin, podemos usar el siguiente método. Puede pegar este método dentro de una actividad o fragmento.
fuente
context.
era la parte que faltaba - podría ser porque lo estoy haciendo dentro de un fragmento.