วางข้อความบน Android Emulator


316

มีวิธีง่าย ๆ ในการคัดลอก / วางเนื้อหาคลิปบอร์ด (ของเดสก์ท็อป) ไปยังEditViewAndroid Emulator หรือไม่?

(เพื่อประโยชน์ในการพัฒนา / ทดสอบเท่านั้น)


2
ใหม่ Joel Beckham- ส่ง SMS: > ฉันมักจะส่งข้อความที่ฉันต้องการคัดลอกเป็นข้อความ SMS> ผ่าน telnet แล้วคัดลอกข้อความจากข้อความ sms แทนที่จะใช้ telnet คุณสามารถใช้ eclipse เพื่อจำลอง sms ขาเข้าในอีมูเลเตอร์: ในเครื่องมือ Android eclipse (เวอร์ชัน 17 อาจเป็นรุ่นเก่ากว่า) เปิด DDMS-Perspective ภายใต้ "Emulator control" / "Telephony Actions" คุณสามารถจำลอง SMS ขาเข้า> เมื่อ emulator ได้รับข้อความคุณสามารถคัดลอกและวาง> ทุกที่ที่คุณต้องการ
k3b

2
สำหรับใครที่ดูคำถามนี้ตอนนี้ รองรับได้แล้วใน Android ตอนนี้ - ให้แน่ใจว่าคุณใช้ Android Studio / Emulator ล่าสุดดังที่กล่าวไว้ที่นี่: stackoverflow.com/a/42678005/207552
bschandramohan

2
กด
onmyway133

คำตอบ:


126

ด้วย v25.3.x ของ Android Emulator และอิมเมจระบบ x86 Google API Emulator API ระดับ 19 (Android 4.4 - Kitkat) และสูงกว่าคุณสามารถคัดลอกและวางจากเดสก์ท็อปของคุณด้วยเมาส์หรือแป้นพิมพ์

ฟีเจอร์นี้มีการประกาศพร้อมกับAndroid Studio 2.3

คัดลอกและวางด้วยตัวเลียนแบบ Android


27
เมื่อวันที่มกราคม 2018 มีข้อผิดพลาดที่รู้จักกันในรุ่นจำลองปัจจุบันซึ่งบางครั้งก็หยุดทำงาน ในฐานะที่เป็นวิธีแก้ปัญหาให้คลิกที่ไอคอน "... " ไปที่การตั้งค่าและสลับการตั้งค่าและเปิด "เปิดใช้งานการแชร์คลิปบอร์ด" ( ที่มา )
mhsmith

@mhsmith คุณจะทำอย่างไร (รีเซ็ตการแชร์คลิปบอร์ด) จากบรรทัดคำสั่งด้วยเครื่องมือบรรทัดคำสั่ง Android หรือผ่านการแก้ไข~/.android/avd/ .iniไฟล์?
โคลอี

@ Chloe เนื่องจากปัญหานี้เกี่ยวข้องกับโปรแกรมจำลองที่ทำงานอยู่แล้วฉันสงสัยว่าสิ่งเหล่านั้นจะสร้างความแตกต่าง
mhsmith

1
คุณจะวางบน mac ได้อย่างไร? การกด Cmd จะเป็นการทำงานแบบมัลติทัช Cmd-V ไม่ทำอะไรเลย
jcollum

17
@jcollum คลิกซ้ายค้างไว้ในช่องข้อความที่คุณต้องการวางลงไปคลิก 'วาง' cmd + v ไม่ทำงาน ctrl + v คงไม่ได้เหมือนกัน
Liam Dawson

306

ในเทอร์มินัลพิมพ์ adb shell input text 'my string here. With some characters escaped like \$ that'

โปรดทราบว่าวิธีการอื่นในการรวมช่องว่างในข้อความคือการแทนที่อักขระ%sแต่ละspaceตัว


22
หากคุณใช้ Mac คุณสามารถวางเนื้อหาของคลิปบอร์ดได้ง่ายขึ้น: adb shell input text "pbpaste"
lowellk

3
จบลงด้วยการใช้เวลาหลายชั่วโมงในวันนี้และเขียนวิธีแก้ปัญหาในหลามสำหรับปัญหาช่องว่าง ง่ายมากที่จะสิ้นสุด bookmarklets ไปยังเบราว์เซอร์หุ้นตอนนี้โดยไม่ต้องสร้างบัญชีซิงค์โหล github.com/gcb/AdbPaste (เขียนขึ้นในขณะที่รอให้อีมูเลเตอร์โหลดและเล่นเกมออนไลน์สองครั้ง ... ! $% # เครื่องมือเลียนแบบช้า)
gcb

2
ดูเหมือนว่ามันจะไม่ทำงานกับตัวละคร UTF บางตัว - หลังจากพยายามส่ง'ლ\(ಠ益ಠლ\)'มันแค่บอกว่า 'Killed' หรือดูเหมือนว่าจะประสบความสำเร็จและไม่มีการพิมพ์อะไรเลยและฉันไม่มีสิ่งใดที่วางได้ในอีมูเลเตอร์ วิธี SMS (ฉันลองจาก DDMS) ดูเหมือนจะไม่ทำงานที่นี่มันแสดงเป็น "? (????)" :(
Groxx

2
ฉันก็ไม่สามารถส่งสตริงที่มีช่องว่าง ฉันต้องใช้% s
ปีเตอร์

2
@ Peter และ Rose มีวิธีเพิ่มบรรทัดใหม่หรือไม่ adb shell input text "This%sis%stext\nDoes%snot%work%here."พิมพ์ "นี่คือข้อความ \ n ไม่สามารถใช้งานได้ที่นี่"
Firelord

84

ฉันมักจะส่งข้อความที่ฉันต้องการคัดลอกเป็นข้อความ SMS ผ่าน telnet แล้วคัดลอกข้อความจากข้อความ sms นี่คือวิธี:

เชื่อมต่อผ่าน telnet:

  • ไวยากรณ์: telnet localhost <port>
  • ตัวอย่าง: telnet localhost 5554

(5554 เป็นพอร์ตเริ่มต้นแถบชื่อเรื่องของอีมูเลเตอร์แสดงพอร์ตที่ใช้งานอยู่เพื่อให้คุณสามารถดูว่ามันแตกต่างกันหรือไม่)

ส่งข้อความ:

  • ไวยากรณ์: sms send <senders phone number> <message>
  • ตัวอย่าง: sms send 1231231234 This is the message you want to send

(คุณสามารถสร้างหมายเลขโทรศัพท์ของผู้ส่งได้)

วิธีนี้ใช้ได้ดีสำหรับลิงก์เนื่องจากข้อความจะถูกแปลงเป็นไฮเปอร์ลิงก์โดยอัตโนมัติซึ่งคุณสามารถคลิกได้โดยไม่ต้องคัดลอก / วางลงในเบราว์เซอร์

เมื่ออีมูเลเตอร์ได้รับข้อความคุณสามารถคัดลอกและวางได้ทุกที่ที่คุณต้องการ


3
คุณไม่ต้องการ telnet ... คุณสามารถส่ง sms จาก ddms (แต่ ddms ต้องการ telnet) แต่เป็นความคิดที่ดี :)
Tima

@ ฉัน - เป็นความคิดที่ดี ขอบคุณ!
Joel Beckham

1
สำหรับผู้ที่สนใจเพียงแค่สร้างเชลล์สคริปต์สำหรับทำสิ่งนี้: gist.github.com/2050770
Todd Mazierski

7
คำตอบนี้มากไป adbใช้ ดูคำตอบของฉัน
Rose Perrone

1
overkill หรือไม่ แต่มันอนุญาตให้วางข้อความตามที่เป็นอยู่โดยไม่จำเป็นต้องยกเว้นอักขระพิเศษ
dmitry

28

เพียงแค่คัดลอกจากที่ใดก็ได้คลิกและกดที่ข้อความแก้ไขของโทรศัพท์จำลองที่คุณต้องการให้ข้อความไป (เช่นคุณกดค้างเพื่อวางบนโทรศัพท์จริง) ตัวเลือก PASTE จะปรากฏขึ้นแล้ว PASTE


3
ขอบคุณ! แน่นอนคำตอบที่ฉันชอบ ด้วยเวอร์ชั่นปัจจุบันของอีมูเลเตอร์มันสะดวกมาก (อีมูเลเตอร์ปัจจุบันมีการตั้งค่าในตัวควบคุมอีมูเลเตอร์ภายใต้ "การตั้งค่า" ซึ่งอนุญาตให้ใช้คลิปบอร์ดร่วมกันได้)
albert c braun

นี่คือวิธีวางบน Mac เนื่องจากคีย์คำสั่งเริ่มท่าทางสัมผัสโดยค่าเริ่มต้น
Jim

19

ไม่แน่ใจว่ามีประโยชน์หรือไม่ แต่ถ้าคุณต้องการ URL ที่ยาวจากเบราว์เซอร์เดสก์ท็อปที่จะเปิดในเบราว์เซอร์มือถือคุณสามารถส่ง SMS ด้วย URL นั้นและเปิดโดยตรงจากแอปข้อความ

ป้อนคำอธิบายรูปภาพที่นี่


คุณสามารถคัดลอกข้อความนั้นได้ ฉันพบวิธีนี้เป็นหนึ่งในวิธีที่ง่ายที่สุดและยากที่สุด!
Hirbod Behnam

ฉันได้รับข้อผิดพลาดนี้: "ไม่สามารถส่งข้อความวิทยุปิด" (บน MacBook)
Atetc

นั่นเป็นประโยชน์อย่างแน่นอน! จาก UI ตัวเลียนแบบเดียวกันไม่มี telnet และไม่มีพารามิเตอร์ และกรณีที่ใช้ URL เพียงแค่สนองความต้องการของฉัน ทางออกที่มีประสิทธิภาพมาก
Alberto De Caro

11

หากคุณใช้ Android Studio บน Mac คุณอาจต้องระบุเส้นทางแบบเต็มไปยังadbไฟล์ที่เรียกใช้งานได้ ในการค้นหาเส้นทางนี้ให้เปิด:

Android Studio > Tools > Android > SDK Manager

คัดลอกพา ธ ไปยังตำแหน่ง SDK adbปฏิบัติการจะเป็นภายในplatform-toolsไดเรกทอรี สำหรับฉันนี่คือเส้นทาง:

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

ตอนนี้คุณสามารถเรียกใช้คำสั่งนี้:

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

7

ฉันเบื่อกับปัญหานี้ดังนั้นฉันจึงตั้งชื่อแทนนี้ให้รองรับ:

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

จากนั้นเมื่อคุณเปิดหน้าต่างเทอร์มินัลใหม่การพิมพ์ "ap" จะวางสิ่งที่อยู่บนคลิปบอร์ดของคุณลงในฟิลด์ข้อความที่เลือกไว้ของอีมูเลเตอร์

ติดตั้ง

เพียงเพิ่มสิ่งนี้ลงในโปรไฟล์ของคุณ (สำหรับผู้ใช้ส่วนใหญ่ที่เป็น~/.bash_profileผู้ใช้ zsh ~/.zshrc) เพื่อให้นามแฝงสามารถใช้ได้ทุกที่ หรือหากคุณเป็นผู้ใช้ทุบตี (ค่าเริ่มต้นสำหรับ MacOS) คุณสามารถเรียกใช้คำสั่งต่อไปนี้ในเครื่องเทอร์มินัลเพื่อตั้งค่าให้คุณ:

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

หรือalias ap="adb shell input text `pbpaste`"
gderaco

กำลังใช้ windows และนามแฝง'alias' is not recognized as an internal or external command, operable program or batch file. ว่าจะทำอย่างไร
shareef

6

สำหรับระดับ API> = 24 เท่านั้น

คัดลอกข้อความใด ๆ จากเครื่องท้องถิ่นของคุณแล้วเพียงเรียกใช้คำสั่งนี้

adb shell input keyevent 279

ตรวจสอบให้แน่ใจในการตั้งค่า Emulator Android Enable Clipboard Sharingตัวเลือกที่เปิดใช้งาน


5

อาจจะยุ่งยากเล็กน้อย แต่คุณสามารถส่ง SMS ไปที่ตัวจำลองได้โดยใช้ตัวควบคุมตัวจำลอง จากนั้นคุณไม่จำเป็นต้องพิมพ์ข้อความทั้งหมดอีกต่อไปถ้ามันยาวขึ้นและสามารถคัดลอก - วางในอีมูเลเตอร์ได้

อีกวิธีหนึ่ง: เชื่อมต่อกับอีมูเลเตอร์ผ่าน "telnet localhost PORT" จากนั้นใช้เหตุการณ์ฮาร์ดแวร์ที่ส่งเพื่อส่งเหตุการณ์การป้อนข้อความไปยังอีมูเลเตอร์ (ต้องเป็น UTF-8) ดูนี่สิ


5

คุณสามารถทำได้โดยไม่ต้องแก้ไขปัญหาด้วย เพียงแค่คลิกค้างไว้สักครู่ในฟิลด์อินพุตจนกระทั่งการแจ้งเตือนการวางปรากฏขึ้นจากนั้นคลิกที่วาง แค่นั้นแหละ!


4

บน Linux จะทำการวางข้อความโดยตรงจากคลิปบอร์ด

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

นอกจากนี้ยังมีประโยชน์อย่างมากในการสร้างแป้นพิมพ์ลัดทั่วโลกด้วยคำสั่งนี้ตัวอย่างเช่น Ctrl+Shift+Super+V


3

สร้างแอปพลิเคชั่น Windows นี้ที่ช่วยให้ผู้ใช้คัดลอกแปะไปยังเครื่องเลียนแบบ Android หรืออุปกรณ์ที่เชื่อมต่อจากอินเตอร์เฟซภาพ https://github.com/Florin-Birgu/Android-Copy-Paste

ป้อนคำอธิบายรูปภาพที่นี่


ขอบคุณสำหรับการแบ่งปัน!
Freshchris

2

คุณดูที่ C2DM หรือยัง chrome2phone และ fox2phone สามารถส่งลิงก์และข้อความคลิปบอร์ดและคัดลอกไปยังโทรศัพท์โดยอัตโนมัติ ลองใช้ adb shell ด้วย มีคำสั่งบริการ (/ system / bin / บริการ) ซึ่งสามารถใช้บริการ (คลิปบอร์ดบริการโทร ... ) รหัสธุรกรรมคือ 1, 2 และ 3 สำหรับ getClipboardText, setClipboardText และ hasClipboardText ตามลำดับ


1

ใช้ Visual Studio Emulator นี่คือวิธีการของฉัน

First Mound การ์ด SD เสมือน:

  1. ใช้เครื่องมือเพิ่มเติม (ไอคอนขนาดเล็ก >>) สำหรับเครื่องจำลองและไปที่แท็บการ์ด SD
  2. เลือกโฟลเดอร์ในคอมพิวเตอร์ของคุณเพื่อซิงค์กับการ์ด SD เสมือน
  3. ดึงจากการ์ด SD ซึ่งจะสร้างโครงสร้างโฟลเดอร์ในโฟลเดอร์ที่เลือก

ตั้งค่าไฟล์ข้อความเพื่อถ่ายโอนข้อความ:

  1. ใช้ Google Play Store เพื่อติดตั้งโปรแกรมแก้ไขข้อความที่คุณเลือก
  2. สร้างไฟล์ข้อความที่มีข้อความของคุณในคอมพิวเตอร์ของคุณในไดเรกทอรีดาวน์โหลดของไดเรกทอรีการ์ด SD เสมือนที่คุณสร้างขึ้นก่อน

เมื่อใดก็ตามที่ฉันต้องการส่งข้อความไปยังคลิปบอร์ด

  1. แก้ไขไฟล์ข้อความที่สร้างขึ้นด้านบน
  2. ไปที่เครื่องมือเพิ่มเติม (ไอคอนขนาดเล็ก >>) และเลือก Push To SD Card
  3. เปิดไฟล์ข้อความใน text editor ที่ฉันติดตั้งและคัดลอกข้อความไปยังคลิปบอร์ด (กดเมาส์ค้างไว้เมื่อกล่องโต้ตอบเปิดขึ้นเลือกเลือกทั้งหมดแล้วคลิกไอคอนคัดลอก)

เมื่อตั้งค่าแล้วมันก็ค่อนข้างง่ายที่จะทำซ้ำ วิธีการเดียวกันนี้จะใช้กับอีมูเลเตอร์อื่น ๆ โดยคุณอาจต้องใช้วิธีการอื่นในการผลักไฟล์ข้อความของคุณไปที่อีมูเลเตอร์


ตัวแก้ไขข้อความที่ฉันใช้แจ้งให้ฉันทราบว่าเนื้อหามีการเปลี่ยนแปลงและถามฉันว่าฉันต้องการโหลดซ้ำหรือไม่
Alexander Higgins

1

(แปลงการอภิปรายความคิดเห็นเพื่อตอบ)

วิธีแก้ปัญหาเฉพาะบน windows: https://github.com/gcb/AdbPaste

เขียนในสองสามชั่วโมงเพื่อแก้ไขปัญหานี้ ตอนนี้ฉันกลับไปใช้ linux 100% ดังนั้นอย่าลังเลที่จะเข้าร่วมเป็นผู้สนับสนุนหรือผู้ดูแล!


ขอบคุณสำหรับสิ่งนี้. หมายเหตุถึงคนอื่น ๆ : มันช้าสำหรับการส่งหลายบรรทัด ฉันมีสคริปต์ LUA เพื่ออัปโหลด 3 หน้าและวิธีนี้ใช้เวลาประมาณ 20 นาทีจากแหล่งไฟล์ Google ต้องตอบสนองความต้องการนี้จริงๆ ฉันรู้ว่าแอพโอเพนซอร์สคีย์บอร์ดที่มีอินเตอร์เฟสเทลเน็ตที่จะเร็วกว่ามาก แต่การเปลี่ยนคีย์บอร์ดเข้า / ออกกลายเป็นขั้นตอนพิเศษ
RoundSparrow hilltx

1
เพื่อแก้ปัญหาความเร็วที่กล่าวถึงในความคิดเห็นสุดท้ายของฉัน: ฉันพบว่ามันเร็วกว่าการใส่แอพตัวช่วยเล็ก ๆ บนอุปกรณ์ที่สามารถนำเนื้อหาคลิปบอร์ดจากคำสั่ง adb broadcast สิ่งนี้เติมคลิปบอร์ดแทนการป้อนข้อมูลโดยตรงตามที่ AdbPaste ทำ - แต่ฉันสามารถปรับปรุงให้อ่านไฟล์ข้อความและสคริปต์ LUA 3 หน้าของฉันตอนนี้ใช้เวลาเพียง 1 หรือ 2 วินาทีในการเปลี่ยนจากคำสั่ง adb ไปเป็น Android กล่องข้อความ. แอปนี้เรียกว่า clipper และปรับปรุงให้อ่านไฟล์ข้อความได้ที่นี่: github.com/RoundSparrow/clipper
RoundSparrow hilltx

1

คำสั่งเขียน: อุปกรณ์ adb (มันจะแสดงรายการอุปกรณ์ที่เชื่อมต่อในปัจจุบัน) เลือกกล่องข้อความที่คุณต้องการเขียนข้อความ เขียนคำสั่ง: ข้อความอินพุตเชลล์ adb "Yourtext" (ตรวจสอบให้แน่ใจว่ามีเพียงหนึ่งอุปกรณ์ที่เชื่อมต่อเพื่อรันคำสั่งนี้) เสร็จสิ้น


0

ฉันมาที่นี่เพื่อค้นหาวิธีแก้ไขปัญหาเดียวกันและลงเอยด้วยการเขียนแอปพลิเคชัน Android เพื่อแก้ไขปัญหานี้ คุณสามารถดาวน์โหลดได้ที่http://www.box.net/shared/6203bn441bfltkimajmk เพียงแค่ให้ URL ผ่านเมนูการตั้งค่าเพื่อชี้ไปยังสถานที่ที่คุณสามารถเปลี่ยนการตอบสนองของเว็บได้อย่างง่ายดาย บรรทัดแรกของการตอบกลับทางเว็บจะถูกคัดลอกไปยังคลิปบอร์ดของอีมูเลเตอร์สำหรับคุณ รายละเอียดเพิ่มเติมสามารถพบได้ที่http://agilesc.barryku.com/?p=255


1
คุณไม่ควรโพสต์รหัสปฏิบัติการได้ที่นี่ ซอร์สโค้ดน่าจะดีกว่ามาก
lowellk

0

สำหรับ Mac และ Linux ลองใช้ฟังก์ชั่นนี้ในไฟล์ aliases_bash ของคุณ (อยู่ใน / etc / aliases_bash สำหรับผู้ใช้ Mac ต้องแน่ใจว่าใช้sudo vim / etc / aliases_bash)

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

จากนั้นในบรรทัดคำสั่งให้ป้อน:

adbtx 'Your text to emulator input'

' ข้อความของคุณที่จะจำลองการป้อนข้อมูล ' จะถูกป้อนเข้าในช่องข้อความจำลอง

รุ่งโรจน์ถึงเอเลียตสำหรับสายการแทนของเขาสำหรับ sed

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.