Fügen Sie Text in Android Emulator ein


316

Gibt es eine einfache Möglichkeit, Inhalte der Zwischenablage in den EditViewAndroid Emulator zu kopieren / einzufügen?

(nur um die Entwicklung / den Test zu vereinfachen)


2
Zu Joel Beckham-SMS senden: > Normalerweise sende ich den zu kopierenden Text als SMS- Nachricht> über Telnet und kopiere dann den Text aus der SMS-Nachricht. Anstatt Telnet zu verwenden, können Sie Eclipse verwenden, um eine eingehende SMS im Emulator zu simulieren: Öffnen Sie in den Eclipse-Android-Tools (Version 17 möglicherweise auch in älteren Versionen) die DDMS-Perspektive. Unter "Emulatorsteuerung" / "Telefonieaktionen" können Sie eine eingehende SMS simulieren.> Sobald der Emulator die Nachricht erhalten hat, können Sie sie kopieren und einfügen> wo immer Sie möchten.
K3B

2
Für alle, die sich diese Frage jetzt ansehen; Es wird jetzt nativ in Android unterstützt - stellen Sie einfach sicher, dass Sie das neueste Android Studio / Emulator verwenden, wie hier erwähnt: stackoverflow.com/a/42678005/207552
bschandramohan

2
Drücken Sie lange auf das Textfeld und wählen Sie Einfügen
onmyway133

Antworten:


126

Mit v25.3.x des Android Emulators und des x86 Google API Emulator-Systemimages API Level 19 (Android 4.4 - Kitkat) und höher können Sie einfach mit Ihrer Maus oder Tastatur von Ihrem Desktop kopieren und einfügen.

Diese Funktion wurde mit Android Studio 2.3 angekündigt

Copy and Paste with the Android Emulator


27
Ab Januar 2018 ist in der aktuellen Emulatorversion ein Fehler bekannt, der gelegentlich nicht mehr funktioniert. Um dieses Problem zu umgehen, klicken Sie auf das Symbol "...", gehen Sie zu "Einstellungen" und schalten Sie die Einstellung "Zwischenablagefreigabe aktivieren" ein und aus. ( Quelle )
mhsmith

@mhsmith Wie geht das (Zurücksetzen der Zwischenablage) über die Befehlszeile mit Android-Befehlszeilentools oder durch Bearbeiten der ~/.android/avd/ .iniDateien?
Chloe

@Chloe Da sich dieses Problem auf einen bereits laufenden Emulator bezieht, bezweifle ich, dass eines dieser Dinge einen Unterschied machen würde.
Mhsmith

1
Wie füge ich auf einem Mac ein? Durch Drücken von Cmd wird Multi-Touch aufgerufen. Cmd-V macht nichts.
JCollum

15
@jcollum Klicken Sie mit der linken Maustaste auf das Textfeld, in das Sie einfügen möchten, und halten Sie es gedrückt. Klicken Sie auf "Einfügen". cmd + v wird nicht funktionieren, Strg + v auch nicht, wie ich mir vorstellen kann.
Liam Dawson

306

Geben Sie in einem Terminal Folgendes ein adb shell input text 'my string here. With some characters escaped like \$ that'

Beachten Sie, dass eine alternative Methode zum Einfügen von Leerzeichen in den Text darin besteht, %sjedes spaceZeichen zu ersetzen .


22
Wenn Sie auf einem Mac arbeiten, können Sie den Inhalt der Zwischenablage noch einfacher adb shell input text "einfügen : pbpaste"
lowellk

3
Es hat heute einige Stunden gedauert und eine Problemumgehung in Python für die Leerzeichenprobleme geschrieben. Es ist jetzt viel einfacher, Lesezeichen für den Aktienbrowser zu beenden, ohne ein Dutzend Synchronisierungskonten erstellen zu müssen. github.com/gcb/AdbPaste (geschrieben, während der Emulator auf das Laden wartete und ein paar Online-Gaming-Sitzungen ...! $% # langsamer Emulator)
gcb

2
Dies scheint bei einigen UTF-Zeichen nicht zu funktionieren. Nach dem Versuch 'ლ\(ಠ益ಠლ\)', sie zu senden , wird nur "Getötet" angezeigt oder es scheint erfolgreich zu sein, und es wird nichts eingegeben. Ich habe auch nichts, das im Emulator eingefügt werden kann. Die SMS-Methode (ich habe es mit DDMS versucht) scheint hier nicht einmal zu funktionieren, sie wird als "? (????)"
angezeigt

2
Ich kann auch keine Zeichenfolgen mit Leerzeichen senden. Ich muss% s verwenden.
Peter

2
@ Peter und Rose, gibt es eine Möglichkeit, eine neue Zeile hinzuzufügen? adb shell input text "This%sis%stext\nDoes%snot%work%here."druckt "Dies ist Text \ n Funktioniert hier nicht."
Feuerlord

84

Normalerweise sende ich den zu kopierenden Text als SMS-Nachricht über Telnet und kopiere dann den Text aus der SMS-Nachricht. Hier ist wie:

Verbindung über Telnet herstellen:

  • Syntax: telnet localhost <port>
  • Beispiel: telnet localhost 5554

(5554 ist der Standardport. In der Titelleiste des Emulators wird der verwendete Port angezeigt, sodass Sie sehen können, ob er anders ist.)

Nachricht senden:

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

(Sie können einfach die Telefonnummer des Absenders zusammenstellen)

Dies funktioniert sehr gut für Links, da die Nachricht automatisch in einen Hyperlink konvertiert wird, auf den Sie klicken können, ohne sie kopieren / in den Browser einfügen zu müssen.

Sobald der Emulator die Nachricht erhalten hat, können Sie sie kopieren und einfügen, wo immer Sie möchten.


3
Sie brauchen sogar kein Telnet ... Sie können SMS von ddms senden (aber ddms benötigen Telnet). Aber schöne Idee :)
Tima

@ Mur - das ist eine großartige Idee. Vielen Dank!
Joel Beckham

1
Für alle Interessierten hat gerade ein Shell-Skript dafür erstellt: gist.github.com/2050770
Todd Mazierski

7
Diese Antwort ist übertrieben. verwenden adb. Siehe meine Antwort.
Rose Perrone

1
Overkill oder nicht, aber es ermöglicht das Einfügen von Text wie er ist, ohne dass Sonderzeichen entkommen müssen.
dmitry

28

Kopieren Sie einfach von überall, klicken Sie auf den Bearbeitungstext des Emulator-Telefons und halten Sie ihn gedrückt, wo der Text abgelegt werden soll (ähnlich wie Sie ihn gedrückt halten würden, um ihn auf einem tatsächlichen Telefon einzufügen). Die Option EINFÜGEN wird angezeigt und dann EINFÜGEN.


3
Vielen Dank! Auf jeden Fall meine Lieblingsantwort. Mit der aktuellen Version des Emulators ist dies sehr praktisch. (Der aktuelle Emulator hat eine Einstellung in den Emulator-Steuerelementen unter "Einstellungen", die die Freigabe der Zwischenablage ermöglicht.)
Albert C Braun

So fügen Sie auf einem Mac ein, da die Befehlstaste standardmäßig Berührungsgesten startet.
Jim

19

Sie sind sich nicht sicher, ob dies nützlich ist. Wenn Sie jedoch eine lange URL vom Desktop-Browser zum Öffnen im mobilen Browser benötigen, können Sie SMS mit dieser URL senden und direkt über die Nachrichten-App öffnen.

Geben Sie hier die Bildbeschreibung ein


Sie können diesen Text sogar kopieren. Ich fand diesen Weg einer der einfachsten und schwierigsten!
Hirbod Behnam

Ich habe folgende Fehlermeldung erhalten: "Nachricht kann nicht gesendet werden, Radio ist ausgeschaltet" (auf MacBook)
Atetc

Das ist auf jeden Fall nützlich! Direkt von der gleichen Benutzeroberfläche des Emulators, kein Telnet, keine Parameter. Und der URL-Anwendungsfall entspricht nur meinen Anforderungen. Eine sehr effektive Lösung.
Alberto De Caro

11

Wenn Sie Android Studio auf einem Mac verwenden, müssen Sie möglicherweise den vollständigen Pfad zur adbausführbaren Datei angeben. Um diesen Pfad zu finden, öffnen Sie:

Android Studio > Tools > Android > SDK Manager

Kopieren Sie den Pfad zum SDK-Speicherort. Die adbausführbare Datei befindet sich in einem platform-toolsVerzeichnis. Für mich war dies der Weg:

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

Jetzt können Sie diesen Befehl ausführen:

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

7

Ich habe dieses Problem satt und habe diesen Alias ​​erstellt, um es zu behandeln:

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

Wenn Sie dann ein neues Terminalfenster öffnen und "ap" eingeben, wird alles, was sich in Ihrer Zwischenablage befindet, in das aktiv ausgewählte Textfeld des Emulators eingefügt.

Installieren

Fügen Sie dies einfach Ihrem Profil hinzu (für die meisten Benutzer gilt dies ~/.bash_profilefür zsh-Benutzer ~/.zshrc), um den Alias ​​überall verfügbar zu machen. Wenn Sie ein Bash-Benutzer sind (die Standardeinstellung für MacOS), können Sie alternativ den folgenden Befehl im Terminal ausführen, um ihn für Sie einzurichten:

echo "alias ap='pbpaste | xargs adb shell input text'" >> ~/.bash_profile && source ~/.bash_profile

oderalias ap="adb shell input text `pbpaste`"
Gderaco

'alias' is not recognized as an internal or external command, operable program or batch file.
Ich

6

Nur für API-Ebene> = 24

Kopieren Sie den Text von Ihrem lokalen Computer und führen Sie diesen Befehl einfach aus

adb shell input keyevent 279

Stellen Sie sicher, dass in den Android Emulator-Einstellungen die Enable Clipboard SharingOptionen aktiviert sind


5

vielleicht ein bisschen knifflig, aber Sie könnten eine SMS an den Emulator senden, indem Sie das Emulator-Steuerelement verwenden. Dann müssen Sie nicht den gesamten Text erneut eingeben, wenn er länger ist, und können ihn kopieren und in den Emulator einfügen.

Eine andere Möglichkeit: Stellen Sie über "telnet localhost PORT" eine Verbindung zum Emulator her und senden Sie dann mithilfe des Hardware-Ereignis-Sendens ein Texteingabeereignis an den Emulator (muss UTF-8 sein). Schauen Sie sich diese


5

Sie können dies auch ohne Problemumgehungen tun. Klicken und halten Sie einfach ein wenig im Eingabefeld, bis die Einfügemeldung angezeigt wird, und klicken Sie dann auf Einfügen. Das ist es!


4

Unter Linux wird Text direkt aus der Zwischenablage eingefügt

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

Es ist auch sehr nützlich, mit diesem Befehl beispielsweise eine globale Tastenkombination zu erstellen Ctrl+Shift+Super+V



2

Haben Sie sich C2DM angesehen? chrome2phone und fox2phone können Links und Text aus der Zwischenablage senden und automatisch auf das Telefon kopieren. Versuchen Sie auch, die ADB-Shell zu verwenden. Es gibt einen Dienstbefehl (/ system / bin / service), der Dienste verwenden kann (Zwischenablage für Serviceabrufe ...). Die Transaktionscodes sind 1, 2 und 3 für getClipboardText, setClipboardText bzw. hasClipboardText.


1

Hier ist meine Methode mit Visual Studio Emulator.

First Mound eine virtuelle SD-Karte:

  1. Verwenden Sie die zusätzlichen Tools (kleines >> Symbol) für den Emulator und wechseln Sie zur Registerkarte SD-Karte.
  2. Wählen Sie einen Ordner auf Ihrem Computer aus, der mit der virtuellen SD-Karte synchronisiert werden soll.
  3. Ziehen Sie von der SD-Karte, wodurch eine Ordnerstruktur für den ausgewählten Ordner erstellt wird.

Richten Sie eine Textdatei zum Übertragen von Text ein:

  1. Verwenden Sie den Google Play Store, um einen Texteditor Ihrer Wahl zu installieren
  2. Erstellen Sie eine Textdatei mit Ihrem Text auf Ihrem Computer im Download-Verzeichnis des zuvor erstellten virtuellen SD-Kartenverzeichnisses.

Wann immer ich Text an die Zwischenablage senden muss.

  1. Bearbeiten Sie die oben erstellte Textdatei.
  2. Gehen Sie zu Zusätzliche Tools (kleines >> Symbol) und wählen Sie Push To SD Card.
  3. Öffnen Sie die Textdatei in dem von mir installierten Texteditor und kopieren Sie den Text in die Zwischenablage. (Halten Sie die Maus gedrückt, wenn der Dialog geöffnet wird, wählen Sie Alle auswählen und klicken Sie dann auf das Kopiersymbol.)

Einmal eingerichtet, ist es ziemlich einfach zu wiederholen. Die gleiche Methode ist auf andere Emulatoren anwendbar, da Sie möglicherweise eine andere Methode verwenden müssen, um Ihre Textdatei an den Emulator zu senden.


Außerdem benachrichtigt mich der von mir verwendete Texteditor, dass sich der Inhalt geändert hat, und fragt mich, ob ich ihn neu laden möchte.
Alexander Higgins

1

(Konvertieren der Kommentardiskussion in eine Antwort)

einzige Lösung unter Windows: https://github.com/gcb/AdbPaste

schrieb es in ein paar Stunden, um dieses Problem zu umgehen. Ich bin jetzt wieder auf 100% Linux, also zögern Sie nicht, als Mitwirkender oder Betreuer mitzumachen!


Danke dafür. Hinweis für andere: Das Senden mehrerer Zeilen ist langsam. Ich habe ein 3-seitiges LUA-Skript zum Hochladen und diese Lösung dauert etwa 20 Minuten von einer Dateiquelle. Google muss diesen Bedarf wirklich decken. Ich kenne eine Open-Source-Tastatur-App mit einer Telnet-Oberfläche, die viel schneller wäre, aber das Ein- und Ausschalten der Tastatur wird zu einem zusätzlichen Schritt.
RoundSparrow Hilltx

1
Um das in meinem letzten Kommentar erwähnte Geschwindigkeitsproblem zu lösen: Ich fand es viel schneller, einfach eine kleine Hilfs-App auf dem Gerät zu platzieren, die Inhalte der Zwischenablage aus dem Befehl adb Broadcast übernehmen kann. Dadurch wird die Zwischenablage anstelle der direkten Eingabe wie bei AdbPaste ausgefüllt. Ich konnte sie jedoch verbessern, um eine Textdatei zu lesen, und für mein 3-seitiges LUA-Skript dauert es jetzt nur noch 1 oder 2 Sekunden, bis der Befehl adb in Android verfügbar ist Textfeld. Die App heißt Clipper und wurde zum Lesen von Textdateien erweitert: github.com/RoundSparrow/clipper
RoundSparrow hilltx

1

Schreibbefehl: adb Geräte (listet das aktuell verbundene Gerät auf) Wählen Sie Textfeld, in das Sie Text schreiben möchten. Schreibbefehl: adb shell Eingabetext "Yourtext" (stellen Sie sicher, dass nur ein Gerät angeschlossen ist, um diesen Befehl auszuführen) Fertig!


0

Ich kam hierher, um nach einer Lösung für das gleiche Problem zu suchen, und schrieb schließlich eine Android-Anwendung, um dieses Problem zu lösen. Sie können es unter http://www.box.net/shared/6203bn441bfltkimajmk herunterladen . Geben Sie einfach eine URL über das Menü "Einstellungen" ein, um auf einen Ort zu verweisen, an dem Sie die Webantwort einfach ändern können. Die erste Zeile der Webantwort wird für Sie in die Zwischenablage Ihres Emulators kopiert. Weitere Informationen finden Sie unter http://agilesc.barryku.com/?p=255 .


1
Sie sollten hier keinen ausführbaren Code veröffentlichen. Der Quellcode wäre viel besser.
Lowellk

0

Versuchen Sie für Mac und Linux diese Funktion in Ihrer Datei aliases_bash (in / etc / aliases_bash für Mac-Benutzer, stellen Sie sicher, dass Sie sudo vim / etc / aliases_bash verwenden).

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

Geben Sie dann in der Befehlszeile Folgendes ein:

adbtx 'Your text to emulator input'

' Ihr Text in die Emulator-Eingabe ' wird in das Emulator-Textfeld eingegeben.

Ein großes Lob an Eliot für seine Ersatzzeichenfolge für sed.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.