Colar texto no emulador do Android

316

Existe uma maneira fácil de copiar / colar o conteúdo da área de transferência no desktop do EditViewAndroid Emulator?

(apenas para facilitar o desenvolvimento / teste)

ankitjaininfo
fonte
2
re Joel Beckham - envie SMS: > Normalmente envio o texto que desejo copiar como mensagem sms> por telnet e, em seguida, copio o texto da mensagem sms. Em vez de usar o telnet, você pode usar o eclipse para simular um sms recebido no emulador: Nas ferramentas android do eclipse (versão 17 talvez também em versões mais antigas), abra o DDMS-Perspective. Em "Controle do emulador" / "Ações de telefonia", você pode simular um sms recebido> Uma vez que o emulador receba a mensagem, você pode copiá-lo e colá-lo onde quiser.
K3b
2
Para quem está olhando para esta pergunta agora; é suportado nativamente no Android agora - apenas certifique-se que você está usando a mais recente Android Estúdio / Emulator como mencionado aqui: stackoverflow.com/a/42678005/207552
bschandramohan
3
Pressione e
segure

Respostas:

126

Com a v25.3.x da API de imagens do sistema Android Emulator e x86 do Google API Emulator, nível 19 (Android 4.4 - Kitkat) e superior, você pode simplesmente copiar e colar da área de trabalho com o mouse ou o teclado.

Esse recurso foi anunciado com o Android Studio 2.3

Copy and Paste with the Android Emulator

Jamal Eason
fonte
27
A partir de janeiro de 2018, há um bug conhecido na versão atual do emulador, onde isso ocasionalmente pára de funcionar. Como solução alternativa, clique no ícone "...", vá para Configurações e alterne a configuração "Ativar compartilhamento da área de transferência". ( Source )
mhsmith
@mhsmith Como você faz isso (redefinir o compartilhamento da área de transferência) na linha de comando com as ferramentas de linha de comando do Android ou através da edição dos ~/.android/avd/ .iniarquivos?
Chloe
@Chloe Como esse problema está relacionado a um emulador já em execução, duvido que qualquer uma dessas coisas faça diferença.
precisa saber é
1
Como você cola em um mac? Pressionar Cmd exibe o toque múltiplo. Cmd-V não faz nada.
jcollum
17
@jcollum clique e mantenha pressionado o campo de texto em que deseja colar, clique em 'Colar'. cmd + v não funcionará, nem ctrl + v, imagino.
Liam Dawson
306

Em um terminal, digite adb shell input text 'my string here. With some characters escaped like \$ that'

Observe que um método alternativo para incluir espaços no texto é substituir %scada spacecaractere.

Rose Perrone
fonte
22
Se você estiver em um Mac, você pode colar o conteúdo da área de transferência ainda mais fácil: adb shell input text "pbpaste"
lowellk
3
acabou levando algumas horas hoje e escreveu uma solução alternativa em python para os problemas de espaço. muito mais fácil finalizar bookmarklets para o navegador de ações agora sem ter que criar uma dúzia de contas de sincronização. github.com/gcb/AdbPaste (escrito enquanto um esperou o emulador para carregar e um par de jogos online sessões ... $% # emulador lento!)
gcb
2
Isso não parece funcionar com alguns caracteres UTF - depois de tentar enviar 'ლ\(ಠ益ಠლ\)', apenas diz 'Killed' ou parece ter êxito e nada é digitado, nem tenho nada pastável no emulador. O método SMS (tentei no DDMS) nem parece estar funcionando aqui, é exibido como "? (????)" :(
Groxx
2
Eu também não posso enviar strings com espaços; Eu tenho que usar% s.
Peter
2
@ Peter e Rose, existe uma maneira de adicionar uma nova linha? adb shell input text "This%sis%stext\nDoes%snot%work%here."impressões "Este é o texto \ nNão funciona aqui.".
Firelord 30/11/2015
84

Normalmente, envio o texto que desejo copiar como mensagem sms através do telnet e, em seguida, copio o texto da mensagem sms. Aqui está como:

Conecte-se através do telnet:

  • Sintaxe: telnet localhost <port>
  • Exemplo: telnet localhost 5554

(5554 é a porta padrão. A barra de título do emulador mostra a porta que está sendo usada, para que você possa ver se é diferente).

Enviar mensagem:

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

(Você pode apenas inventar o número de telefone do remetente)

Isso funciona muito bem para os links, pois a mensagem é convertida automaticamente em um hiperlink no qual você pode clicar sem precisar copiar / colar no navegador.

Depois que o emulador receber a mensagem, você pode copiá-lo e colá-lo onde quiser.

Joel Beckham
fonte
3
você nem precisa de telnet ... você pode enviar sms a partir de ddms (mas ddms precisa de telnet no entanto). Mas boa ideia :)
Tima
@ Mur - essa é uma ótima idéia. Obrigado!
Joel Beckham
1
Para quem estiver interessado, acaba de criar um shell script para fazer isso: gist.github.com/2050770
Todd Mazierski
7
Essa resposta é um exagero. use adb. Veja minha resposta.
Rose Perrone
1
Excesso ou não, mas permite colar texto como está, sem a necessidade de escapar de caracteres especiais.
Dmitry
28

Apenas copie de qualquer lugar, clique e segure o texto de edição do telefone emulador para onde deseja que o texto vá (como se você pressionasse e segure para colar em um telefone real), a opção PASTE aparecerá e depois PASTE.

Raymond Wachaga
fonte
3
Obrigado! Definitivamente minha resposta favorita. Com a versão atual do emulador, isso é muito conveniente. (O emulador de corrente tem uma definição nos controles do emulador em "Configurações", que permite a partilha de área de transferência.)
albert c Braun
É assim que colar no Mac, já que a tecla de comando inicia os gestos de toque por padrão.
Jim
19

Não tenho certeza se isso é útil, mas, se você precisar que um URL longo do navegador da área de trabalho seja aberto no navegador móvel, poderá enviar SMS com esse URL e abrir diretamente do aplicativo de mensagens.

insira a descrição da imagem aqui

TEH EMPRAH
fonte
Você pode até copiar esse texto. Achei assim um dos mais simples e mais complicados!
Hirbod Behnam
Eu tenho esse erro: "Não é possível enviar a mensagem, rádio está desligado" (no MacBook)
Atetc
Isso é definitivamente útil! Diretamente da mesma interface do usuário do emulador, sem telnet, sem parâmetros. E o caso de uso da URL apenas atende às minhas necessidades. Uma solução muito eficaz.
Alberto De Caro
11

Se você estiver usando o Android Studio em um Mac, talvez seja necessário fornecer o caminho completo para o adbexecutável. Para encontrar esse caminho, abra:

Android Studio > Tools > Android > SDK Manager

Copie o caminho para o local do SDK. O adbexecutável estará dentro de um platform-toolsdiretório. Para mim, esse era o caminho:

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

Agora você pode executar este comando:

~/Library/Android/sdk/platform-tools/adb shell input text 'thetextyouwanttopaste'
Andrew
fonte
7

Eu me cansei desse problema, então apenas criei esse alias para lidar com isso:

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

Então, quando você abre uma nova janela do terminal, digitar "ap" colará o que estiver na sua área de transferência no campo de texto selecionado ativamente do emulador.

Configuração

Simplesmente adicione isso ao seu perfil (para a maioria dos usuários que são os usuários do ~/.bash_profilezsh ~/.zshrc) para disponibilizar o alias em qualquer lugar. Como alternativa, se você é um usuário do bash (o padrão para o MacOS), pode executar o seguinte comando no terminal para configurá-lo:

echo "alias ap='pbpaste | xargs adb shell input text'" >> ~/.bash_profile && source ~/.bash_profile
gMale
fonte
oualias ap="adb shell input text `pbpaste`"
gderaco 13/11
estou usando o windows e apelido 'alias' is not recognized as an internal or external command, operable program or batch file. o que fazer
shareef
6

Somente para o nível da API> = 24

Copie qualquer texto da sua máquina local e simplesmente execute este comando

adb shell input keyevent 279

Verifique se Nas configurações do emulador do Android as Enable Clipboard Sharingopções estão ativadas

Rishabh Arya
fonte
5

talvez um pouco complicado, mas você pode enviar um sms para o emulador usando o controle do emulador. você não precisará digitar novamente todo o texto, se for maior, e poderá copiá-lo e colá-lo no emulador.

de outra maneira: conecte-se ao emulador via "telnet localhost PORT" e use o envio de eventos de hardware para enviar um evento de entrada de texto ao emulador (precisa ser UTF-8). olha isso

louco
fonte
5

Você pode fazer isso sem soluções alternativas também. Apenas clique e segure um pouco no campo de entrada até que a notificação de colagem apareça e clique em colar. É isso aí!

nana janashia
fonte
4

No Linux, isso colará o texto diretamente da área de transferência

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

Também é muito útil criar atalhos de teclado globais com este comando, por exemplo Ctrl+Shift+Super+V

Andrey Izman
fonte
3

Feito este aplicativo do Windows que permite aos usuários copiar e colar para emuladores Android ou dispositivos conectados a partir de uma interface visual. https://github.com/Florin-Birgu/Android-Copy-Paste

insira a descrição da imagem aqui

Florin Birgu
fonte
Obrigado por compartilhar!
Freshchris
2

Você já viu o C2DM? chrome2phone e fox2phone podem enviar links e texto da área de transferência e copiá-lo automaticamente no telefone. Além disso, tente usar o shell adb. Existe um comando de serviço (/ system / bin / service) que pode usar serviços (área de transferência da chamada de serviço ...). Os códigos de transação são 1, 2 e 3, para getClipboardText, setClipboardText e hasClipboardText, respectivamente.

yingted
fonte
1

Usando o Visual Studio Emulator, aqui está o meu método.

Primeiro monte um cartão SD virtual:

  1. Use as Ferramentas adicionais (pequeno ícone >>) para o emulador e vá para a guia Cartão SD.
  2. Selecione uma pasta no seu computador para sincronizar com o cartão SD virtual.
  3. Puxe do cartão SD, o que criará uma estrutura de pastas na pasta selecionada.

Configure um arquivo de texto para transferir texto:

  1. Use o Google Play Store para instalar um editor de texto de sua escolha
  2. Crie um arquivo de texto contendo o seu texto no seu computador no diretório de download do diretório do cartão SD virtual criado anteriormente.

Sempre que preciso enviar texto para a área de transferência.

  1. Edite o arquivo de texto criado acima.
  2. Vá para Ferramentas adicionais (ícone pequeno >>) e escolha Push To SD Card.
  3. Abra o arquivo de texto no editor de texto que eu instalei e copie o texto na área de transferência. (Mantenha o mouse pressionado quando a caixa de diálogo for aberta, escolha selecionar tudo e clique no ícone de cópia)

Depois de configurado, é muito fácil repetir. O mesmo método seria aplicável a outros emuladores, pois pode ser necessário usar um método diferente para enviar o arquivo de texto ao emulador.

Alexander Higgins
fonte
Além disso, o editor de texto que eu uso me notifica que o conteúdo foi alterado e pergunta se eu quero recarregá-lo.
Alexander Higgins
1

(convertendo a discussão do comentário em resposta)

única solução no Windows: https://github.com/gcb/AdbPaste

escrevi em algumas horas para solucionar esse problema. Agora estou de volta ao 100% linux, então sinta-se à vontade para participar como colaborador ou mantenedor!

gcb
fonte
Obrigado por isso. Nota para outras pessoas: é lento para enviar várias linhas. Eu tenho um script LUA de 3 páginas para carregar e esta solução leva 20 minutos a partir de uma fonte de arquivo. O Google realmente precisa atender a essa necessidade. Conheço um aplicativo de teclado de código aberto que possui uma interface telnet muito mais rápida, mas alternar entre ativar / desativar o teclado se torna uma etapa extra.
RoundSparrow hilltx
1
Para resolver o problema de velocidade mencionado no meu último comentário: achei muito mais rápido colocar um pequeno aplicativo auxiliar no dispositivo que pode receber o conteúdo da área de transferência do comando adb broadcast. Isso preenche a área de transferência em vez da entrada direta, como o AdbPaste - mas eu pude aprimorá-lo para ler um arquivo de texto e, para o meu script LUA de 3 páginas, agora são necessários apenas 1 ou 2 segundos para passar do comando adb para tê-lo no Android caixa de texto. O aplicativo é chamado clipper e reforçada para ler arquivo de texto é aqui: github.com/RoundSparrow/clipper
RoundSparrow hilltx
1

Comando de gravação: adb devices (ele listará o dispositivo conectado no momento) Selecione Caixa de texto onde deseja escrever o texto. Comando de gravação: texto de entrada adb shell "Yourtext" (verifique se apenas um dispositivo está conectado para executar este comando) Concluído!

Arpan24x7
fonte
0

Eu vim aqui procurando uma solução para o mesmo problema e acabei escrevendo um aplicativo Android para resolver esse problema. Você pode baixá-lo em http://www.box.net/shared/6203bn441bfltkimajmk . Basta fornecer um URL no menu Preferências para apontar para um local onde você pode alterar facilmente a resposta da Web. A primeira linha da resposta da Web será copiada para a área de transferência do emulador para você. Mais detalhes podem ser encontrados em http://agilesc.barryku.com/?p=255 .

barryku
fonte
1
Você não deve postar código executável aqui. O código fonte seria muito melhor.
lowellk
0

Para Mac e Linux, tente esta função no arquivo aliases_bash (localizado em / etc / aliases_bash para pessoas do Mac, certifique-se de usar o sudo vim / etc / aliases_bash)

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

Em seguida, na linha de comandos, digite:

adbtx 'Your text to emulator input'

' Sua entrada de texto no emulador ' será inserida no campo de texto do emulador.

Elogios a Eliot por sua sequência de substituição para sed.

padeiro
fonte