Dán văn bản trên Trình giả lập Android


316

Có cách nào dễ dàng để sao chép / dán nội dung clipboard của máy tính để bàn EditViewvào Trình giả lập Android không?

(chỉ vì lợi ích để dễ dàng phát triển / thử nghiệm)


2
re Joel Beckham-gửi SMS: > Tôi thường gửi văn bản tôi muốn sao chép dưới dạng tin nhắn sms> qua telnet và sau đó sao chép văn bản từ tin nhắn sms. Thay vì sử dụng telnet, bạn có thể sử dụng nhật thực để mô phỏng tin nhắn đến trong trình giả lập: Trong các công cụ android nhật thực (phiên bản 17 cũng có thể ở các phiên bản cũ hơn) mở DDMS-Phối cảnh. Trong "Điều khiển trình giả lập" / "Tác vụ điện thoại", bạn có thể mô phỏng tin nhắn đến> Sau khi trình giả lập nhận được tin nhắn, bạn có thể sao chép nó và dán> bất cứ nơi nào bạn muốn.
k3b

2
Đối với bất cứ ai nhìn vào câu hỏi này bây giờ; hiện tại nó đã được hỗ trợ trong Android - chỉ cần đảm bảo rằng bạn đang sử dụng Trình tạo / Trình giả lập Android mới nhất như được đề cập ở đây: stackoverflow.com/a/42678005/207552
bschandramohan

3
Nhấn và giữ vào trường văn bản và chọn Dán
onmyway133

Câu trả lời:


126

Với phiên bản v25.3.x của Trình mô phỏng Android & x86 Google API Trình mô phỏng hệ thống API Cấp 19 (Android 4.4 - Kitkat) trở lên, bạn có thể chỉ cần sao chép và dán từ máy tính để bàn bằng chuột hoặc bàn phím.

Tính năng này đã được công bố với Android Studio 2.3

Sao chép và Dán bằng Trình giả lập Android


27
Kể từ tháng 1 năm 2018, có một lỗi đã biết trong phiên bản giả lập hiện tại nơi điều này thỉnh thoảng ngừng hoạt động. Để khắc phục, hãy nhấp vào biểu tượng "...", đi tới Cài đặt và bật và tắt cài đặt "Bật chia sẻ bảng tạm". ( Nguồn )
mhsmith

@mhsmith Làm thế nào để bạn làm điều đó (đặt lại chia sẻ clipboard) từ dòng lệnh bằng các công cụ dòng lệnh Android hoặc thông qua chỉnh sửa các ~/.android/avd/ .initệp?
Chloe

@Chloe Vì vấn đề này liên quan đến trình giả lập đã chạy, tôi nghi ngờ một trong những điều đó sẽ tạo ra sự khác biệt.
mhsmith

1
Làm thế nào để bạn dán trên máy mac? Nhấn Cmd sẽ mang lại cảm ứng đa điểm. Cmd-V không làm gì cả.
jcollum

17
@jcollum nhấp chuột trái và giữ vào trường văn bản bạn muốn dán vào, nhấp vào 'Dán'. cmd + v sẽ không hoạt động, tôi cũng sẽ không ctrl + v.
Liam Dawson

306

Trong một thiết bị đầu cuối, gõ adb shell input text 'my string here. With some characters escaped like \$ that'

Lưu ý rằng một phương pháp thay thế để bao gồm khoảng trắng trong văn bản là thay thế %scho từng spaceký tự.


22
Nếu bạn đang sử dụng máy Mac, bạn có thể dán nội dung của bảng tạm dễ dàng hơn: adb shell input text "pbpaste"
lowellk

3
cuối cùng đã mất vài giờ hôm nay và viết một cách giải quyết vấn đề về con trăn cho các vấn đề không gian. Bây giờ dễ dàng hơn nhiều để kết thúc bookmarklets vào trình duyệt chứng khoán mà không cần phải tạo một tá tài khoản đồng bộ hóa. github.com/gcb/AdbPaste (được viết trong khi chờ trình giả lập tải và một vài phiên chơi trò chơi trực tuyến ...! $% # trình giả lập chậm)
gcb

2
Điều này dường như không hoạt động với một số ký tự UTF - sau khi cố gắng gửi 'ლ\(ಠ益ಠლ\)', nó chỉ nói 'Bị giết' hoặc có vẻ thành công và không có gì được nhập, tôi cũng không có bất cứ điều gì có thể vượt qua trong trình giả lập. Phương thức SMS (tôi đã thử từ DDMS) thậm chí dường như không hoạt động ở đây, nó hiển thị dưới dạng "? (????)" :(
Groxx

2
Tôi cũng không thể gửi chuỗi có khoảng trắng; Tôi phải sử dụng% s.
Peter

2
@Peter và Rose, có cách nào để thêm một dòng mới không? adb shell input text "This%sis%stext\nDoes%snot%work%here."in "Đây là văn bản \ nKhông hoạt động ở đây.".
Firelord

84

Tôi thường gửi văn bản tôi muốn sao chép dưới dạng tin nhắn sms qua telnet và sau đó sao chép văn bản từ tin nhắn sms. Đây là cách thực hiện:

Kết nối qua telnet:

  • Cú pháp: telnet localhost <port>
  • Thí dụ: telnet localhost 5554

(5554 là cổng mặc định. Thanh tiêu đề của trình giả lập hiển thị cổng đang được sử dụng, vì vậy bạn có thể thấy nếu nó khác nhau).

Gửi tin nhắn:

  • Cú pháp: sms send <senders phone number> <message>
  • Thí dụ: sms send 1231231234 This is the message you want to send

(Bạn chỉ có thể tạo số điện thoại của người gửi)

Điều này hoạt động thực sự tốt cho các liên kết vì tin nhắn được tự động chuyển đổi thành một siêu liên kết mà bạn có thể nhấp mà không cần phải sao chép / dán nó vào trình duyệt.

Khi trình giả lập nhận được tin nhắn, bạn có thể sao chép nó và dán nó bất cứ nơi nào bạn muốn.


3
bạn thậm chí không cần telnet ... bạn có thể gửi sms từ ddms (tuy nhiên ddms cần telnet). Nhưng ý tưởng hay :)
Tima

@Mur - đó là một ý tưởng tuyệt vời. Cảm ơn!
Joel Beckham

1
Đối với bất kỳ ai quan tâm, chỉ cần tạo một tập lệnh shell để thực hiện việc này: gist.github.com/2050770
Todd Mazierski

7
Câu trả lời này là quá mức cần thiết. sử dụng adb. Xem câu trả lời của tôi.
Rose Perrone

1
Quá mức cần thiết hoặc không, nhưng nó cho phép dán văn bản như hiện tại, mà không cần phải thoát các ký tự đặc biệt.
dmitry

28

Chỉ cần sao chép từ bất cứ đâu, nhấp và giữ vào văn bản chỉnh sửa trình giả lập nơi bạn muốn văn bản đi (giống như bạn sẽ nhấn và giữ để dán trên điện thoại thực tế), tùy chọn PASTE sẽ xuất hiện, sau đó PASTE.


3
Cảm ơn bạn! Chắc chắn câu trả lời yêu thích của tôi. Với phiên bản hiện tại của trình giả lập, điều này rất thuận tiện. (Trình giả lập hiện tại có một cài đặt trong các điều khiển trình giả lập trong "Cài đặt" cho phép chia sẻ bảng tạm.)
albert c braun

Đây là cách dán trên Mac, vì phím lệnh bắt đầu các cử chỉ chạm theo mặc định.
Jim

19

Không chắc chắn nếu điều đó hữu ích, nhưng, nếu bạn cần một URL dài từ trình duyệt máy tính để bàn được mở trong trình duyệt di động, bạn có thể gửi SMS bằng URL đó và mở trực tiếp từ ứng dụng tin nhắn.

nhập mô tả hình ảnh ở đây


Bạn thậm chí có thể sao chép văn bản đó. Tôi thấy cách này là một trong những cách đơn giản nhất và khó nhất!
Hirbod Behnam

Tôi gặp lỗi này: "Không thể gửi tin nhắn, radio bị tắt" (trên MacBook)
Atetc

Đó chắc chắn là hữu ích! Direcly từ giao diện người dùng rất giống nhau của trình giả lập, không telnet, không tham số. Và trường hợp sử dụng URL chỉ đáp ứng nhu cầu của tôi. Một giải pháp rất hiệu quả.
Alberto De Caro

11

Nếu bạn đang sử dụng Android Studio trên máy Mac, bạn có thể cần cung cấp đường dẫn đầy đủ để adbthực thi. Để tìm đường dẫn này, hãy mở:

Android Studio > Tools > Android > SDK Manager

Sao chép đường dẫn đến vị trí SDK. Việc adbthực thi sẽ nằm trong một platform-toolsthư mục. Đối với tôi, đây là con đường:

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

Bây giờ bạn có thể chạy lệnh này:

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

7

Tôi cảm thấy mệt mỏi với vấn đề này vì vậy tôi chỉ tạo bí danh này để xử lý nó:

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

Sau đó, khi bạn mở một cửa sổ terminal mới, gõ "ap" sẽ dán bất cứ thứ gì vào clipboard của bạn vào trường văn bản được chọn tích cực của trình giả lập.

Thiết lập

Chỉ cần thêm phần này vào hồ sơ của bạn (đối với hầu hết người dùng là ~/.bash_profilengười dùng zsh ~/.zshrc) để làm cho bí danh có sẵn ở mọi nơi. Ngoài ra, nếu bạn là người dùng bash (mặc định cho MacOS), thì bạn có thể chạy lệnh sau trong thiết bị đầu cuối để thiết lập nó cho bạn:

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

hoặcalias ap="adb shell input text `pbpaste`"
gderaco

đang sử dụng windows và bí danh 'alias' is not recognized as an internal or external command, operable program or batch file. phải làm gì
shareef

6

Chỉ dành cho cấp API> = 24

Sao chép bất kỳ văn bản từ máy cục bộ của bạn và sau đó chỉ cần chạy lệnh này

adb shell input keyevent 279

Đảm bảo Trong Cài đặt trình giả lập Android, các Enable Clipboard Sharingtùy chọn được bật


5

có thể một chút khó khăn, nhưng bạn có thể gửi một tin nhắn đến trình giả lập bằng cách sử dụng điều khiển trình giả lập. sau đó bạn không phải gõ lại tất cả văn bản nếu nó dài hơn và có thể sao chép-dán nó vào trình giả lập.

một cách khác: kết nối với trình giả lập thông qua "telnet localhost PORT" và sau đó sử dụng gửi sự kiện phần cứng để gửi một sự kiện nhập văn bản đến trình giả lập (cần phải là UTF-8). nhìn này


5

Bạn có thể làm điều này mà không cần cách giải quyết quá. Chỉ cần nhấp và giữ một chút trong trường nhập liệu cho đến khi thông báo dán xuất hiện và sau đó nhấp vào dán. Đó là nó!


4

Trên Linux, nó sẽ dán văn bản trực tiếp từ clipboard

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

Ngoài ra, nó rất hữu ích để tạo phím tắt bàn phím toàn cầu với lệnh này chẳng hạn Ctrl+Shift+Super+V



2

Bạn đã nhìn vào C2DM chưa? chrome2phone và fox2phone có thể gửi liên kết và văn bản clipboard và tự động sao chép nó trên điện thoại. Ngoài ra, hãy thử sử dụng vỏ adb. Có một lệnh dịch vụ (/ system / bin / service) có thể sử dụng các dịch vụ (clipboard cuộc gọi dịch vụ ...). Mã giao dịch lần lượt là 1, 2 và 3, cho getClipboardText, setClipboardText và hasClipboardText.


1

Sử dụng Trình mô phỏng Visual Studio, đây là phương pháp của tôi.

Đầu tiên Mound một thẻ sd ảo:

  1. Sử dụng Công cụ bổ sung (biểu tượng >> nhỏ) cho trình giả lập và chuyển đến tab Thẻ SD.
  2. Chọn một thư mục trên máy tính của bạn để đồng bộ hóa với thẻ SD ảo.
  3. Kéo từ thẻ SD, sẽ tạo cấu trúc thư mục trên thư mục đã chọn.

Thiết lập tệp văn bản để chuyển văn bản:

  1. Sử dụng Cửa hàng Google Play để cài đặt trình chỉnh sửa văn bản bạn chọn
  2. Tạo một tệp văn bản chứa văn bản của bạn trên máy tính của bạn trong thư mục tải xuống của thư mục thẻ sd ảo mà bạn đã tạo trước đó.

Bất cứ khi nào tôi cần gửi văn bản đến bảng clip.

  1. Chỉnh sửa tập tin văn bản được tạo ở trên.
  2. Chuyển đến Công cụ bổ sung (biểu tượng >> nhỏ) và chọn Đẩy vào thẻ SD.
  3. Mở tệp văn bản trong trình soạn thảo văn bản tôi đã cài đặt và sao chép văn bản vào bảng clip. (Giữ chuột khi hộp thoại mở ra, chọn chọn tất cả và sau đó nhấp vào biểu tượng sao chép)

Sau khi thiết lập nó khá dễ dàng để lặp lại. Phương pháp tương tự sẽ được áp dụng cho các trình giả lập khác bởi bạn có thể cần phải sử dụng một phương pháp khác để đẩy tệp văn bản của mình sang trình giả lập.


Ngoài ra, trình soạn thảo văn bản tôi sử dụng thông báo cho tôi rằng nội dung đã thay đổi và hỏi tôi có muốn tải lại không.
Alexander Higgins

1

(chuyển đổi thảo luận bình luận để trả lời)

giải pháp duy nhất trên windows: https://github.com/gcb/AdbPaste

đã viết nó trong một vài giờ để khắc phục vấn đề này. Bây giờ tôi đã quay lại với linux 100%, vì vậy hãy tham gia với tư cách là người đóng góp hoặc bảo trì!


Cảm ơn vì điều đó. Lưu ý cho người khác: chậm gửi nhiều dòng. Tôi có tập lệnh LUA 3 trang để tải lên và giải pháp này mất 20 phút từ nguồn tệp. Google thực sự cần phải giải quyết nhu cầu này. Tôi biết một ứng dụng Bàn phím nguồn mở có giao diện telnet sẽ nhanh hơn nhiều, nhưng chuyển đổi bàn phím vào / ra trở thành một bước bổ sung.
RoundSparrow hilltx

1
Để giải quyết vấn đề tốc độ được đề cập trong bình luận cuối cùng của tôi: Tôi thấy rằng nhanh hơn nhiều khi chỉ cần đặt một ứng dụng trợ giúp nhỏ trên thiết bị có thể lấy nội dung clipboard từ lệnh quảng cáo adb. Điều này điền vào bảng tạm thay vì nhập trực tiếp như AdbPaste - nhưng tôi đã có thể cải thiện nó để đọc tệp văn bản và đối với tập lệnh LUA 3 trang của tôi, giờ chỉ mất 1 hoặc 2 giây để chuyển từ lệnh adb sang có trong Android hộp văn bản. Ứng dụng này được gọi là clipper và được tăng cường để đọc tệp văn bản tại đây: github.com/RoundSparrow/clipper
RoundSparrow hilltx

1

Lệnh ghi: thiết bị adb (nó sẽ liệt kê thiết bị hiện được kết nối) Chọn Hộp văn bản nơi bạn muốn viết văn bản. Viết lệnh: adb shell text text "Yourtext" (đảm bảo chỉ có một thiết bị được kết nối để chạy lệnh này) Xong!


0

Tôi đến đây để tìm giải pháp cho cùng một vấn đề, và cuối cùng đã viết một ứng dụng Android để giải quyết vấn đề này. Bạn có thể tải xuống tại http://www.box.net/ Shared/6203bn441bfltkimajmk . Chỉ cần cung cấp URL qua menu Tùy chọn để trỏ đến một nơi mà bạn có thể thay đổi phản hồi Web một cách dễ dàng. Dòng đầu tiên của phản hồi Web sẽ được sao chép vào bảng tạm của trình giả lập cho bạn. Thông tin chi tiết có thể được tìm thấy tại http://agilesc.barryku.com/?p=255 .


1
Bạn không nên đăng mã thực thi ở đây. Mã nguồn sẽ tốt hơn nhiều.
lowellk

0

Đối với Mac và Linux, hãy thử chức năng này trong tệp aliases_bash của bạn (nằm trong / etc / aliases_bash cho Mac folks, hãy chắc chắn sử dụng sudo vim / etc / aliases_bash)

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

Sau đó, trong dòng lệnh nhập:

adbtx 'Your text to emulator input'

' Văn bản của bạn để nhập trình mô phỏng ' sẽ được nhập vào trường văn bản trình giả lập.

Kudos đến Eliot cho chuỗi thay thế của mình cho sed.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.