Sí, realmente puedes hacer esto. Se ve un poco torpe cuando inspeccionas el portapapeles, pero funciona muy bien.
Primero, puedes inspeccionar el contenido actual del portapapeles con service call clipboard 1
de una cáscara de adb (o, sin desgranar primero, adb shell service call clipboard 1
). Puede empezar en blanco inicialmente después de un reinicio, por ejemplo:
# service call clipboard 1
Result: Parcel(
0x00000000: 00000000 00000001 00000000 00000000 '................'
0x00000010: 00000000 00000000 '........ ')
#
Puedes poner texto en el portapapeles usando service call clipboard 2
que básicamente toma 3 parámetros: dos pulgadas y la cuerda que quieres poner en el portapapeles:
# service call clipboard 2 i32 1 i32 0 s16 "Hi there"
Result: Parcel(00000000 '....')
Para ser honesto, no estoy seguro de cuáles son los dos primeros parámetros. Una respuesta sobre el desbordamiento de la pila ha sugerido que la primera int es "número de artículos en el paquete" (uno en este caso) y que la segunda es la longitud de la cuerda. Sin embargo, he usado 0 para el segundo parámetro y funciona bien, y no puedo encontrar ninguna documentación que coincida con esta función en particular... así que toma eso como algo que valga la pena.
En cualquier caso, es básicamente la creación de un objeto Parcela con 3 campos, y luego pasarlo al portapapeles. El portapapeles entonces desempaqueta el Parcela y establece el valor de la cadena pasada como el contenido del portapapeles. Puedes ver esto cuando vayas a recuperar el valor después:
# service call clipboard 1
Result: Parcel(
0x00000000: 00000000 00000001 00000000 00000008 '................'
0x00000010: 00690048 00740020 00650068 00650072 'H.i. .t.h.e.r.e.'
0x00000020: 00000000 00000000 '........ ')
#
Del mismo modo, si se pulsa durante mucho tiempo en un campo de entrada de texto y se pulsa "Pegar" después de hacer esto, se obtendrá el texto que se estableció a través de la call service clipboard 2
línea arriba (y se verá completamente normal).
(Los ejemplos anteriores provienen de mi HTC EVO, corriendo CyanogenMod 7)
0 votos
Para quien busque enfoques más sencillos para los emuladores, vea aquí: stackoverflow.com/questions/3391160/