samsung portapapeles pegar para link laptop copiar como celular aplicacion android menu clipboardmanager

android - pegar - portapapeles samsung



¿Cómo copiar texto programáticamente en mi aplicación de Android? (8)

Actualización de la biblioteca de soporte de Android

A partir de Android Oreo, la biblioteca de asistencia 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 que se mencionan en algunas de las otras respuestas. Gran parte del código puede ser limpiado. (Pero vea mi historial de ediciones si todavía es compatible con versiones inferiores).

Dupdo

ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); ClipData clip = ClipData.newPlainText("label", selectedText); if (clipboard == null) return; clipboard.setPrimaryClip(clip);

Pegar

Estoy agregando este código como un bono, porque copiar / pegar generalmente se hace en pares.

ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); try { CharSequence text = clipboard.getPrimaryClip().getItemAt(0).getText(); } catch (Exception e) { return; }

Notas

  • Asegúrese de importar la versión android.content.ClipboardManager lugar del antiguo android.text.ClipboardManager . Lo mismo para ClipData .
  • Si no está en una actividad, puede obtener el servicio con context.getSystemService() .
  • Utilicé un bloque try / catch para obtener el texto pegado porque varias cosas pueden ser null . Puede comprobar cada uno si encuentra que la forma más legible.

Estoy creando una aplicación para Android y quiero copiar el valor de texto de un widget EditText. Es posible que el usuario presione Menu+A luego Menu+C para copiar el valor, pero ¿cómo haría esto mediante programación?


@FlySwat ya dio la respuesta correcta, solo estoy compartiendo la respuesta completa:

Utilice el método ClipboardManager.setPrimaryClip ( developer.android.com/reference/android/content/… ):

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); ClipData clip = ClipData.newPlainText("label", "Text to copy"); clipboard.setPrimaryClip(clip);

Donde label es una etiqueta visible para el usuario para los datos del clip y el text es el texto real en el clip. Según los documentos oficiales .

Es importante utilizar esta importación:

import android.content.ClipboardManager;


Aquí hay algo de código para implementar algunas funciones de copiar y pegar desde EditText (gracias a Warpzit por la verificación de la versión). Puede conectar estos al evento onclick de su botón.

public void copy(View v) { int startSelection = txtNotes.getSelectionStart(); int endSelection = txtNotes.getSelectionEnd(); if ((txtNotes.getText() != null) && (endSelection > startSelection )) { String selectedText = txtNotes.getText().toString().substring(startSelection, endSelection); int sdk = android.os.Build.VERSION.SDK_INT; if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) { android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); clipboard.setText(selectedText); } else { android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); android.content.ClipData clip = android.content.ClipData.newPlainText("WordKeeper",selectedText); clipboard.setPrimaryClip(clip); } } } public void paste(View v) { int sdk = android.os.Build.VERSION.SDK_INT; if (sdk < android.os.Build.VERSION_CODES.HONEYCOMB) { android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); if (clipboard.getText() != null) { txtNotes.getText().insert(txtNotes.getSelectionStart(), clipboard.getText()); } } else { android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); android.content.ClipData.Item item = clipboard.getPrimaryClip().getItemAt(0); if (item.getText() != null) { txtNotes.getText().insert(txtNotes.getSelectionStart(), item.getText()); } } }


Así que todos están de acuerdo en cómo se debe hacer esto, pero como nadie quiere dar una solución completa, aquí va:

int sdk = android.os.Build.VERSION.SDK_INT; if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) { android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); clipboard.setText("text to clip"); } else { android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); android.content.ClipData clip = android.content.ClipData.newPlainText("text label","text to clip"); clipboard.setPrimaryClip(clip); }

Supongo que tienes algo como lo siguiente declarado en manifiesto:

<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="14" />


Googlear te lleva a android.content.ClipboardManager y puedes decidir, como lo hice, que el Portapapeles no está disponible en la API <11, porque la página de documentación dice "Desde: API nivel 11".

En realidad, hay dos clases, la segunda extiende la primera: android.text.ClipboardManager y android.content.ClipboardManager.

android.text.ClipboardManager existe desde la API 1, pero funciona solo con contenido de texto.

android.content.ClipboardManager es la forma preferida de trabajar con el portapapeles, pero no está disponible en el nivel de API <11 (Honeycomb).

Para obtener alguno de ellos necesitas el siguiente código:

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);

Pero para API <11 tienes que importar android.text.ClipboardManager y para API> = 11 android.content.ClipboardManager


Para habilitar la copia / pegado estándar para TextView, U puede elegir uno de los siguientes:

Cambio en el archivo de diseño: agregue la siguiente propiedad a su TextView

android:textIsSelectable="true"

En tu clase de Java escribe esta línea dos establece el gramaticalmente.

myTextView.setTextIsSelectable(true);

Y una pulsación larga en TextView puede ver la barra de acción copiar / pegar.



public void onClick (View v) { switch (v.getId()) { case R.id.ButtonCopy: copyToClipBoard(); break; case R.id.ButtonPaste: pasteFromClipBoard(); break; default: Log.d(TAG, "OnClick: Unknown View Received!"); break; } } // Copy EditCopy text to the ClipBoard private void copyToClipBoard() { ClipboardManager clipMan = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE); clipMan.setPrimaryClip(editCopy.getText()); }

puedes probar esto ..