Coller du texte sur l'émulateur Android

316

Existe-t-il un moyen simple de copier / coller le contenu du presse-papiers (du bureau) EditViewsur l'émulateur Android?

(juste pour faciliter le développement / test)

ankitjaininfo
la source
2
concernant Joel Beckham-envoyer un SMS: > J'envoie généralement le texte que je veux copier sous forme de message sms> via telnet, puis je copie le texte du message sms. Au lieu d'utiliser telnet, vous pouvez utiliser eclipse pour simuler un sms entrant dans l'émulateur: dans les outils android eclipse (la version 17 peut-être aussi dans les anciennes versions) ouvrez le DDMS-Perspective. Sous "Contrôle de l'émulateur" / "Actions de téléphonie", vous pouvez simuler un sms entrant> Une fois que l'émulateur reçoit le message, vous pouvez le copier et le coller> où vous voulez.
k3b
2
Pour quiconque regarde cette question maintenant; il est pris en charge nativement dans Android maintenant - assurez-vous simplement que vous utilisez le dernier Android Studio / Emulator comme mentionné ici: stackoverflow.com/a/42678005/207552
bschandramohan
3
Appuyez
longuement

Réponses:

126

Avec la version 25.3.x des images système de l'émulateur Android et de l'émulateur d'API Google x86 API Niveau 19 (Android 4.4 - Kitkat) et plus, vous pouvez simplement copier et coller à partir de votre bureau avec votre souris ou votre clavier.

Cette fonctionnalité a été annoncée avec Android Studio 2.3

Copiez et collez avec l'émulateur Android

Jamal Eason
la source
27
Depuis janvier 2018, il existe un bug connu dans la version actuelle de l'émulateur où cela cesse parfois de fonctionner. Pour contourner ce problème, cliquez sur l'icône "...", accédez à Paramètres et activez et désactivez le paramètre "Activer le partage du presse-papiers". ( Source )
mhsmith
@mhsmith Comment faites-vous cela (réinitialiser le partage du presse-papiers) à partir de la ligne de commande avec les outils de ligne de commande Android ou en modifiant les ~/.android/avd/ .inifichiers?
Chloé du
@Chloe Étant donné que ce problème concerne un émulateur déjà en cours d'exécution, je doute que l'une de ces choses ferait une différence.
mhsmith
1
Comment collez-vous sur un mac? Appuyez sur Cmd pour afficher le multi-touch. Le Cmd-V ne fait rien.
jcollum
17
@jcollum faites un clic gauche et maintenez sur le champ de texte dans lequel vous souhaitez coller, cliquez sur 'Coller'. cmd + v ne fonctionnera pas, ni ctrl + v, j'imagine.
Liam Dawson
306

Dans un terminal, saisissez adb shell input text 'my string here. With some characters escaped like \$ that'

Notez qu'une autre méthode pour inclure des espaces dans le texte consiste à remplacer %schaque spacecaractère.

Rose Perrone
la source
22
Si vous êtes sur un Mac, vous pouvez coller le contenu du presse-papiers encore plus facilement: adb shell input text "pbpaste"
lowellk
3
a fini par prendre quelques heures aujourd'hui et a écrit une solution de contournement en python pour les problèmes d'espaces. beaucoup plus facile de mettre fin aux bookmarklets dans le navigateur de stock sans avoir à créer une douzaine de comptes de synchronisation. github.com/gcb/AdbPaste (écrit pendant que l'émulateur attendait de se charger et quelques sessions de jeu en ligne ...! $% # émulateur lent)
gcb
2
Cela ne semble pas fonctionner avec certains caractères UTF - après avoir essayé d'envoyer 'ლ\(ಠ益ಠლ\)', il dit simplement 'Killed' ou semble réussir et rien n'est tapé, et je n'ai rien de collable dans l'émulateur. La méthode SMS (que j'ai essayée depuis DDMS) ne semble même pas fonctionner ici, elle s'affiche comme "? (????)" :(
Groxx
2
Moi aussi, je ne peux pas envoyer de chaînes avec des espaces; Je dois utiliser% s.
Peter
2
@Peter et Rose, existe-t-il un moyen d'ajouter une nouvelle ligne? adb shell input text "This%sis%stext\nDoes%snot%work%here."imprime "Ceci est du texte \ nNe fonctionne pas ici.".
Firelord
84

J'envoie généralement le texte que je veux copier sous forme de message SMS via Telnet, puis je copie le texte du message SMS. Voici comment:

Connectez-vous via telnet:

  • Syntaxe: telnet localhost <port>
  • Exemple: telnet localhost 5554

(5554 est le port par défaut. La barre de titre de l'émulateur affiche le port utilisé, vous pouvez donc voir s'il est différent).

Envoyer le message:

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

(Vous pouvez simplement composer le numéro de téléphone de l'expéditeur)

Cela fonctionne très bien pour les liens car le message est automatiquement converti en un lien hypertexte sur lequel vous pouvez cliquer sans avoir à le copier / coller dans le navigateur.

Une fois que l'émulateur reçoit le message, vous pouvez le copier et le coller où vous le souhaitez.

Joel Beckham
la source
3
vous n'avez même pas besoin de telnet ... vous pouvez envoyer des sms depuis ddms (mais les ddms ont besoin de telnet cependant). Mais bonne idée :)
Tima
@Mur - c'est une excellente idée. Merci!
Joel Beckham
1
Pour toute personne intéressée, venez de créer un script shell pour ce faire: gist.github.com/2050770
Todd Mazierski
7
Cette réponse est exagérée. utiliser adb. Voir ma réponse.
Rose Perrone
1
Overkill ou pas, mais il permet de coller du texte tel quel, sans avoir besoin d'échapper les caractères spéciaux.
dmitry
28

Copiez simplement de n'importe où, cliquez et maintenez sur le texte de modification du téléphone émulateur où vous voulez que le texte aille (un peu comme si vous appuyez et maintenez pour coller sur un téléphone réel), l'option COLLER apparaîtra, puis COLLER.

Raymond Wachaga
la source
3
Je vous remercie! Certainement ma réponse préférée. Avec la version actuelle de l'émulateur, c'est très pratique. (L'émulateur actuel a un paramètre dans les commandes de l'émulateur sous "Paramètres" qui permet le partage du presse-papiers.)
albert c braun
Voici comment coller sur Mac, car la touche de commande démarre les gestes tactiles par défaut.
Jim
19

Je ne sais pas si c'est utile, mais, si vous avez besoin d'une longue URL à partir du navigateur de bureau pour être ouverte dans le navigateur mobile, vous pouvez envoyer des SMS avec cette URL et ouvrir directement à partir de l'application de message.

entrez la description de l'image ici

TEH EMPRAH
la source
Vous pouvez même copier ce texte. J'ai trouvé de cette façon l'une des plus simples et des plus délicates!
Hirbod Behnam
J'ai eu cette erreur: "Impossible d'envoyer le message, la radio est éteinte" (sur MacBook)
Atetc
C'est vraiment utile! Directement à partir de la même interface utilisateur de l'émulateur, pas de telnet, pas de paramètres. Et le cas d'utilisation de l'URL répond à mes besoins. Une solution très efficace.
Alberto De Caro
11

Si vous utilisez Android Studio sur un Mac, vous devrez peut-être fournir le chemin d'accès complet à l' adbexécutable. Pour trouver ce chemin, ouvrez:

Android Studio > Tools > Android > SDK Manager

Copiez le chemin d'accès à l'emplacement du SDK. L' adbexécutable sera dans un platform-toolsrépertoire. Pour moi, c'était le chemin:

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

Vous pouvez maintenant exécuter cette commande:

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

Je suis fatigué de ce problème, j'ai donc créé cet alias pour le gérer:

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

Ensuite, lorsque vous ouvrez une nouvelle fenêtre de terminal, taper "ap" collera tout ce qui se trouve dans votre presse-papiers dans le champ de texte activement sélectionné de l'émulateur.

Installer

Ajoutez simplement cela à votre profil (pour la plupart des utilisateurs, c'est ~/.bash_profilepour les utilisateurs de zsh ~/.zshrc) pour rendre l'alias disponible partout. Alternativement, si vous êtes un utilisateur bash (par défaut pour MacOS), vous pouvez exécuter la commande suivante dans le terminal pour le configurer pour vous:

echo "alias ap='pbpaste | xargs adb shell input text'" >> ~/.bash_profile && source ~/.bash_profile
gMale
la source
oualias ap="adb shell input text `pbpaste`"
gderaco
utilise windows et alias 'alias' is not recognized as an internal or external command, operable program or batch file. quoi faire
shareef
6

Uniquement pour le niveau API> = 24

Copiez n'importe quel texte de votre ordinateur local, puis exécutez simplement cette commande

adb shell input keyevent 279

Assurez-vous que dans les paramètres de l'émulateur Android, les Enable Clipboard Sharingoptions sont activées

Rishabh Arya
la source
5

peut-être un peu délicat, mais vous pouvez envoyer un sms à l'émulateur en utilisant le contrôle de l'émulateur. vous n'avez pas à retaper tout le texte s'il est plus long et pouvez le copier-coller dans l'émulateur.

une autre façon: connectez-vous à l'émulateur via "telnet localhost PORT" puis utilisez l'envoi d'événements matériels pour envoyer un événement de saisie de texte à l'émulateur (doit être UTF-8). regarde ça

furieux
la source
5

Vous pouvez également le faire sans solution de contournement. Cliquez et maintenez un peu dans le champ de saisie jusqu'à ce que la notification de collage apparaisse, puis cliquez sur coller. C'est tout!

nana janashia
la source
4

Sous Linux, cela va coller du texte directement depuis le presse-papiers

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

Il est également très utile de créer un raccourci clavier global avec cette commande par exemple Ctrl+Shift+Super+V

Andrey Izman
la source
3

Création de cette application Windows qui permet aux utilisateurs de copier-coller sur des émulateurs Android ou des appareils connectés à partir d'une interface visuelle. https://github.com/Florin-Birgu/Android-Copy-Paste

entrez la description de l'image ici

Florin Birgu
la source
Merci d'avoir partagé!
Freshchris
2

Avez-vous regardé C2DM? chrome2phone et fox2phone peuvent envoyer des liens et du texte du presse-papiers et les copier automatiquement sur le téléphone. Essayez également d'utiliser le shell adb. Il y a une commande de service (/ system / bin / service) qui peut utiliser des services (presse-papiers d'appel de service ...). Les codes de transaction sont 1, 2 et 3, pour getClipboardText, setClipboardText et hasClipboardText respectivement.

yingted
la source
1

À l'aide de Visual Studio Emulator, voici ma méthode.

Montez d'abord une carte SD virtuelle:

  1. Utilisez les outils supplémentaires (petite icône >>) pour l'émulateur et accédez à l'onglet Carte SD.
  2. Sélectionnez un dossier sur votre ordinateur à synchroniser avec la carte SD virtuelle.
  3. Tirez de la carte SD, ce qui créera une structure de dossiers sur le dossier sélectionné.

Configurer un fichier texte pour transférer du texte:

  1. Utilisez Google Play Store pour installer un éditeur de texte de votre choix
  2. Créez un fichier texte contenant votre texte sur votre ordinateur dans le répertoire de téléchargement du répertoire virtuel de la carte SD que vous avez créé auparavant.

Chaque fois que j'ai besoin d'envoyer du texte au presse-papiers.

  1. Modifiez le fichier texte créé ci-dessus.
  2. Allez dans Outils supplémentaires (petite icône >>) et choisissez Push To SD Card.
  3. Ouvrez le fichier texte dans l'éditeur de texte que j'ai installé et copiez le texte dans le presse-papiers. (Maintenez la souris enfoncée lorsque la boîte de dialogue s'ouvre, choisissez tout sélectionner, puis cliquez sur l'icône de copie)

Une fois installé, il est assez facile de le répéter. La même méthode serait applicable à d'autres émulateurs.Vous devrez peut-être utiliser une méthode différente pour pousser votre fichier texte vers l'émulateur.

Alexander Higgins
la source
De plus, l'éditeur de texte que j'utilise m'informe que le contenu a changé et me demande si je veux le recharger.
Alexander Higgins
1

(conversion de la discussion des commentaires en réponse)

seule solution sur windows: https://github.com/gcb/AdbPaste

l'a écrit en quelques heures pour contourner ce problème. Je suis de retour sur 100% linux, alors n'hésitez pas à le rejoindre en tant que contributeur ou mainteneur!

gcb
la source
Merci pour cela. Note aux autres: c'est lent pour envoyer plusieurs lignes. J'ai un script LUA de 3 pages à télécharger et cette solution prend environ 20 minutes à partir d'une source de fichiers. Google doit vraiment répondre à ce besoin. Je connais une application de clavier open source qui a une interface telnet qui serait beaucoup plus rapide, mais la commutation du clavier en entrée / sortie devient une étape supplémentaire.
RoundSparrow hilltx
1
Pour résoudre le problème de vitesse mentionné dans mon dernier commentaire: j'ai trouvé qu'il est beaucoup plus rapide de simplement mettre une petite application d'aide sur l'appareil qui peut prendre le contenu du presse-papiers de la commande de diffusion adb. Cela remplit le presse-papiers au lieu de la saisie directe comme le fait AdbPaste - mais j'ai pu l'améliorer pour lire un fichier texte et pour mon script LUA de 3 pages, il ne faut plus que 1 ou 2 secondes pour passer de la commande adb à l'avoir dans Android zone de texte. L'application est appelée clipper et améliorée pour lire le fichier texte est ici: github.com/RoundSparrow/clipper
RoundSparrow hilltx
1

Commande d'écriture: périphériques adb (il répertorie le périphérique actuellement connecté) Sélectionnez Zone de texte où vous souhaitez écrire du texte. Commande d'écriture: texte d'entrée du shell adb "Yourtext" (assurez-vous qu'un seul périphérique est connecté pour exécuter cette commande) Terminé!

Arpan24x7
la source
0

Je suis venu ici à la recherche d'une solution au même problème et j'ai fini par écrire une application Android pour résoudre ce problème. Vous pouvez le télécharger sur http://www.box.net/shared/6203bn441bfltkimajmk . Donnez simplement une URL via le menu Préférences pour pointer vers un endroit où vous pouvez facilement changer la réponse Web. La première ligne de la réponse Web sera copiée pour vous dans le presse-papiers de votre émulateur. Plus de détails peuvent être trouvés sur http://agilesc.barryku.com/?p=255 .

barryku
la source
1
Vous ne devez pas publier de code exécutable ici. Le code source serait bien meilleur.
lowellk
0

Pour Mac et Linux, essayez cette fonction dans votre fichier aliases_bash (situé dans / etc / aliases_bash pour les gens de Mac, assurez-vous d'utiliser sudo vim / etc / aliases_bash)

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

Ensuite, dans la ligne de commande, entrez:

adbtx 'Your text to emulator input'

« Votre texte à l'entrée de l'émulateur » sera entré dans le champ de texte de l'émulateur.

Félicitations à Eliot pour sa chaîne de substitution pour sed.

boulanger
la source