Pegar texto en el emulador de Android

316

¿Hay una manera fácil de copiar / pegar el contenido del portapapeles en EditViewel emulador de Android?

(solo por el bien para facilitar el desarrollo / prueba)

ankitjaininfo
fuente
2
re Joel Beckham-enviar SMS: > Normalmente envío el texto que quiero copiar como mensaje SMS> a través de telnet y luego copio el texto del mensaje SMS. En lugar de usar telnet, puede usar eclipse para simular un sms entrante en el emulador: en las herramientas de Android eclipse (la versión 17 tal vez también en versiones anteriores) abra la Perspectiva DDMS. En "Control del emulador" / "Acciones de telefonía" puede simular un sms entrante> Una vez que el emulador recibe el mensaje, puede copiarlo y pegarlo donde desee.
k3b
2
Para cualquiera que esté mirando esta pregunta ahora; ahora es compatible de forma nativa en Android, solo asegúrese de estar utilizando el último Android Studio / Emulator como se menciona aquí: stackoverflow.com/a/42678005/207552
bschandramohan
3
Mantenga presionado el campo de texto y seleccione Pegar
onmyway133

Respuestas:

126

Con v25.3.x del Android Emulator y x86 Google API Emulator imágenes del sistema API Level 19 (Android 4.4 - Kitkat) y superior, simplemente puede copiar y pegar desde su escritorio con su mouse o teclado.

Esta característica fue anunciada con Android Studio 2.3

Copie y pegue con el emulador de Android

Jamal Eason
fuente
27
A partir de enero de 2018, hay un error conocido en la versión actual del emulador, que ocasionalmente deja de funcionar. Como solución alternativa, haga clic en el icono "...", vaya a Configuración y active y desactive la opción "Habilitar el uso compartido del portapapeles". ( Fuente )
mhsmith
@mhsmith ¿Cómo se hace eso (restablecer el uso compartido del portapapeles) desde la línea de comandos con las herramientas de línea de comandos de Android o mediante la edición de los ~/.android/avd/ .iniarchivos?
Chloe
@Chloe Dado que este problema se relaciona con un emulador que ya se está ejecutando, dudo que alguna de esas cosas haga la diferencia.
mhsmith
1
¿Cómo se pega en una Mac? Al presionar Cmd aparece la función multitáctil. Cmd-V no hace nada.
jcollum
17
@jcollum haga clic izquierdo y mantenga presionado el campo de texto en el que desea pegar, haga clic en 'Pegar'. cmd + v no funcionará, ni ctrl + v, me imagino.
Liam Dawson
306

En una terminal, escriba adb shell input text 'my string here. With some characters escaped like \$ that'

Tenga en cuenta que un método alternativo para incluir espacios en el texto es sustituir %scada spacecarácter.

Rose Perrone
fuente
22
Si está en una Mac, puede pegar el contenido del portapapeles aún más fácilmente: adb shell input text "pbpaste"
lowellk
3
Terminé tomando algunas horas hoy y escribió una solución alternativa en Python para los problemas de espacios. ahora es mucho más fácil finalizar marcadores en el navegador de stock sin tener que crear una docena de cuentas de sincronización. github.com/gcb/AdbPaste (escrito mientras esperaba que se cargara el emulador y un par de sesiones de juego en línea ...! $% # emulador lento)
gcb
2
Esto no parece funcionar con algunos caracteres UTF: después de intentar enviar 'ლ\(ಠ益ಠლ\)', solo dice 'Asesinado' o parece tener éxito y no se escribe nada, ni tengo nada pegable en el emulador. El método SMS (probé desde DDMS) ni siquiera parece estar funcionando aquí, se muestra como "? (????)" :(
Groxx
2
Yo tampoco puedo enviar cadenas con espacios; Tengo que usar% s.
Peter
2
@ Peter y Rose, ¿hay alguna forma de agregar una nueva línea? adb shell input text "This%sis%stext\nDoes%snot%work%here."imprime "Esto es texto \ nNo funciona aquí".
Señor del fuego
84

Por lo general, envío el texto que quiero copiar como un mensaje SMS a través de Telnet y luego copio el texto del mensaje SMS. Así es cómo:

Conéctese a través de telnet:

  • Sintaxis: telnet localhost <port>
  • Ejemplo: telnet localhost 5554

(5554 es el puerto predeterminado. La barra de título del emulador muestra el puerto que se está utilizando, para que pueda ver si es diferente).

Enviar mensaje:

  • Sintaxis: sms send <senders phone number> <message>
  • Ejemplo: sms send 1231231234 This is the message you want to send

(Puede inventar el número de teléfono del remitente)

Esto funciona muy bien para los enlaces, ya que el mensaje se convierte automáticamente en un hipervínculo en el que puede hacer clic sin tener que copiarlo / pegarlo en el navegador.

Una vez que el emulador recibe el mensaje, puede copiarlo y pegarlo donde desee.

Joel Beckham
fuente
3
incluso no necesita telnet ... puede enviar sms desde ddms (pero ddms necesita telnet sin embargo). Pero buena idea :)
Tima
@Mur: es una gran idea. ¡Gracias!
Joel Beckham
1
Para cualquier persona interesada, acaba de crear un script de shell para hacer esto: gist.github.com/2050770
Todd Mazierski
77
Esta respuesta es exagerada. uso adb. Mira mi respuesta.
Rose Perrone
1
Exagerar o no, pero permite pegar texto tal cual, sin la necesidad de escapar de caracteres especiales.
dmitry
28

Simplemente copie desde donde sea, haga clic y mantenga presionado el texto de edición del teléfono del emulador donde desea que vaya el texto (como si presionara y mantenga presionado para pegar en un teléfono real), aparecerá la opción PEGAR, luego PEGAR.

Raymond Wachaga
fuente
3
¡Gracias! Definitivamente mi respuesta favorita. Con la versión actual del emulador, esto es muy conveniente. (El emulador actual tiene una configuración en los controles del emulador en "Configuración" que permite compartir el portapapeles.)
albert c braun
Así es como pegar en Mac, ya que la tecla de comando inicia los gestos táctiles de forma predeterminada.
Jim
19

No estoy seguro de si eso es útil, pero si necesita abrir una URL larga del navegador de escritorio en el navegador móvil, puede enviar SMS con esa URL y abrirla directamente desde la aplicación de mensajes.

ingrese la descripción de la imagen aquí

TEH EMPRAH
fuente
Incluso puedes copiar ese texto. ¡Encontré de esta manera uno de los más simples y engañosos!
Hirbod Behnam
Recibí este error: "No se puede enviar el mensaje, la radio está apagada" (en MacBook)
Atetc
¡Eso es definitivamente útil! Directamente desde la misma interfaz de usuario del emulador, sin telnet, sin parámetros. Y el caso de uso de URL solo satisface mis necesidades. Una solución muy efectiva.
Alberto De Caro
11

Si está utilizando Android Studio en una Mac, es posible que deba proporcionar la ruta completa al adbejecutable. Para encontrar esta ruta, abra:

Android Studio > Tools > Android > SDK Manager

Copie la ruta a la ubicación del SDK. El adbejecutable estará dentro de un platform-toolsdirectorio. Para mí, este fue el camino:

~/Library/Android/sdk/platform-tools/adb

Ahora puedes ejecutar este comando:

~/Library/Android/sdk/platform-tools/adb shell input text 'thetextyouwanttopaste'
Andrés
fuente
7

Me cansé de este problema, así que hice este alias para manejarlo:

alias ap="pbpaste | xargs adb shell input text"

Luego, cuando abra una nueva ventana de terminal, al escribir "ap" pegará lo que esté en su portapapeles en el campo de texto seleccionado activamente en el emulador.

Preparar

Simplemente agregue esto a su perfil (para la mayoría de los usuarios, eso es ~/.bash_profilepara los usuarios de zsh ~/.zshrc), para que el alias esté disponible en todas partes. Alternativamente, si eres un usuario bash (el predeterminado para MacOS), entonces puedes ejecutar el siguiente comando en la terminal para configurarlo por ti:

echo "alias ap='pbpaste | xargs adb shell input text'" >> ~/.bash_profile && source ~/.bash_profile
gMale
fuente
oalias ap="adb shell input text `pbpaste`"
gderaco
estoy usando windows y alias 'alias' is not recognized as an internal or external command, operable program or batch file. qué hacer
shareef
6

Solo para nivel API> = 24

Copie cualquier texto de su máquina local y luego simplemente ejecute este comando

adb shell input keyevent 279

Asegúrese de que en la configuración del emulador de Android las Enable Clipboard Sharingopciones estén habilitadas

Rishabh Arya
fuente
5

quizás un poco complicado, pero puede enviar un sms al emulador utilizando el control del emulador. entonces no tiene que volver a escribir todo el texto si es más largo y puede copiarlo y pegarlo en el emulador.

otra forma: conéctese al emulador a través de "telnet localhost PORT" y luego use el envío de eventos de hardware para enviar un evento de entrada de texto al emulador (debe ser UTF-8). mira esto

enojado
fuente
5

Puede hacer esto sin soluciones también. Simplemente haga clic y mantenga presionado por un momento en el campo de entrada hasta que aparezca la notificación de pegar y luego haga clic en pegar. ¡Eso es!

nana janashia
fuente
4

En Linux, esto pegará el texto directamente desde el portapapeles

adb shell input text "'$(xclip -selection c -o)'"

También es muy útil crear una combinación de teclas global con este comando, por ejemplo Ctrl+Shift+Super+V

Andrey Izman
fuente
2

¿Has mirado en C2DM? chrome2phone y fox2phone pueden enviar enlaces y texto del portapapeles y copiarlo automáticamente en el teléfono. Además, intente usar el shell adb. Hay un comando de servicio (/ system / bin / service) que puede usar servicios (portapapeles de llamadas de servicio ...). Los códigos de transacción son 1, 2 y 3, para getClipboardText, setClipboardText y hasClipboardText respectivamente.

yingted
fuente
1

Usando Visual Studio Emulator, aquí está mi método.

Primer Montículo de una tarjeta SD virtual:

  1. Use las herramientas adicionales (icono pequeño >>) para el emulador y vaya a la pestaña Tarjeta SD.
  2. Seleccione una carpeta en su computadora para sincronizar con la tarjeta SD virtual.
  3. Tire de la tarjeta SD, lo que creará una estructura de carpetas en la carpeta seleccionada.

Configure un archivo de texto para transferir texto:

  1. Use Google Play Store para instalar un editor de texto de su elección.
  2. Cree un archivo de texto que contenga su texto en su computadora en el directorio de descarga del directorio de la tarjeta SD virtual que creó anteriormente.

Cada vez que necesito enviar texto al portapapeles.

  1. Edite el archivo de texto creado anteriormente.
  2. Vaya a Herramientas adicionales (icono pequeño >>) y elija Push To SD Card.
  3. Abra el archivo de texto en el editor de texto que instalé y copie el texto en el portapapeles. (Mantenga presionado el mouse cuando se abra el cuadro de diálogo, elija seleccionar todo y luego haga clic en el icono de copiar)

Una vez configurado, es bastante fácil de repetir. El mismo método se aplicaría a otros emuladores si usted necesita usar un método diferente para enviar su archivo de texto al emulador.

Alexander Higgins
fuente
Además, el editor de texto que uso me notifica que el contenido ha cambiado y me pregunta si quiero volver a cargarlo.
Alexander Higgins
1

(convirtiendo la discusión de comentarios en respuesta)

única solución en windows: https://github.com/gcb/AdbPaste

lo escribió en un par de horas para solucionar este problema. Ahora estoy de vuelta en Linux al 100%, ¡así que siéntase libre de unirse como colaborador o mantenedor!

gcb
fuente
Gracias por esto. Nota para los demás: es lento para enviar varias líneas. Tengo que cargar un script LUA de 3 páginas y esta solución tarda unos 20 minutos desde una fuente de archivo. Google realmente necesita abordar esta necesidad. Sé de una aplicación de teclado de código abierto que tiene una interfaz telnet que sería mucho más rápida, pero cambiar el teclado de entrada / salida se convierte en un paso adicional.
RoundSparrow hilltx
1
Para resolver el problema de velocidad mencionado en mi último comentario: descubrí que es mucho más rápido simplemente poner una pequeña aplicación auxiliar en el dispositivo que puede tomar el contenido del portapapeles del comando de transmisión adb. Esto llena el portapapeles en lugar de la entrada directa como lo hace AdbPaste, pero pude mejorarlo para leer un archivo de texto y para mi script LUA de 3 páginas ahora solo toma 1 o 2 segundos pasar del comando adb a tenerlo en Android caja de texto. La aplicación se llama clipper y está mejorada para leer el archivo de texto aquí: github.com/RoundSparrow/clipper
RoundSparrow hilltx
1

Comando de escritura: dispositivos adb (enumerará el dispositivo conectado actualmente) Seleccione Cuadro de texto donde desea escribir texto. Comando de escritura: adb shell input text "Yourtext" (asegúrese de que solo un dispositivo esté conectado para ejecutar este comando) ¡Listo!

Arpan24x7
fuente
0

Vine aquí buscando una solución al mismo problema y terminé escribiendo una aplicación de Android para resolver este problema. Puede descargarlo en http://www.box.net/shared/6203bn441bfltkimajmk . Simplemente proporcione una URL a través del menú Preferencias para señalar un lugar donde pueda cambiar la respuesta web fácilmente. La primera línea de la respuesta web se copiará en el portapapeles de su emulador por usted. Se pueden encontrar más detalles en http://agilesc.barryku.com/?p=255 .

barryku
fuente
1
No debe publicar código ejecutable aquí. El código fuente sería mucho mejor.
lowellk
0

Para Mac y Linux, pruebe esta función en su archivo aliases_bash (ubicado en / etc / aliases_bash para la gente de Mac, asegúrese de usar sudo vim / etc / aliases_bash)

function adbtx {
  userinput="$(sed 's/ /%s/g' <<< $1)"
  adb shell input text "${userinput}";
}
export -f adbtx

Luego en la línea de comando ingrese:

adbtx 'Your text to emulator input'

' Su entrada de texto a emulador ' se ingresará en el campo de texto del emulador.

Felicitaciones a Eliot por su cadena de sustitución de sed.

Panadero
fuente