Sim, você realmente pode fazer isso. É meio esquisito quando você inspeciona a área de transferência, mas funciona muito bem.
Primeiro, você pode inspecionar o conteúdo atual da área de transferência a service call clipboard 1
partir de um shell adb (ou, sem casca antes adb shell service call clipboard 1
). Pode começar inicialmente em branco após uma reinicialização, por exemplo:
# service call clipboard 1
Result: Parcel(
0x00000000: 00000000 00000001 00000000 00000000 '................'
0x00000010: 00000000 00000000 '........ ')
#
Você pode colocar texto na área de transferência usando service call clipboard 2
, o que basicamente leva três parâmetros - duas polegadas e a string que você deseja colocar na área de transferência:
# service call clipboard 2 i32 1 i32 0 s16 "Hi there"
Result: Parcel(00000000 '....')
Para ser sincero, não sei ao certo quais são os dois primeiros parâmetros. Uma resposta no Stack Overflow sugeriu que o primeiro int é "número de itens no pacote" (um neste caso) e que o segundo é o comprimento da string. No entanto, usei 0 para o segundo parâmetro e ele funciona bem, e não consigo encontrar nenhuma documentação que corresponda a essa função específica ...
De qualquer forma, é basicamente criar um objeto Parcel com 3 campos e passá-lo para a área de transferência. A área de transferência descompacta o pacote e define o valor da sequência passada como o conteúdo da área de transferência. Você pode ver isso quando recuperar o valor posteriormente:
# 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 '........ ')
#
Da mesma forma, se você pressionar longamente um campo de entrada de texto e pressionar "Colar" depois de fazer isso, receberá o texto que foi definido através da call service clipboard 2
linha acima (e parecerá completamente normal).
(Os exemplos acima são do meu HTC EVO, executando o CyanogenMod 7)