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)


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


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.


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.


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.


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


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'

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

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


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


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í!


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



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.


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.


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!


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!


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 .


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.