Вставте текст на Android-емулятор


316

Чи є простий спосіб скопіювати / вставити вміст буфера обміну (на робочому столі) в EditViewAndroid Emulator?

(лише заради полегшення розробки / тестування)


2
Re Joel Beckham - відправте SMS: > Зазвичай я надсилаю текст, який хочу скопіювати у вигляді sms-повідомлення> через telnet, а потім копіюю текст із SMS-повідомлення. Замість використання telnet ви можете використовувати eclipse для імітації вхідного sms в емуляторі: У інструментах для android eclipse (версія 17, можливо, також у старих версіях) відкрийте DDMS-Perspective. У розділі "Керування емулятором" / "Дії телефонії" ви можете імітувати вхідне sms> Після того, як емулятор отримає повідомлення, ви можете скопіювати його та вставити> куди завгодно.
k3b

2
Для тих, хто зараз дивиться на це питання; він спочатку підтримується в Android зараз - просто переконайтеся , що ви використовуєте останню версію Android Studio / Emulator , як зазначено тут: stackoverflow.com/a/42678005/207552
bschandramohan

2
Довго натисніть на текстовому полі та виберіть Вставити
onmyway133

Відповіді:


126

За допомогою v25.3.x Android Emulator & x86 Google API зображення Емулятор системи 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, я думаю.
Ліам Доусон

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
сьогодні закінчився кілька годин і написав подолання в python для питань простору. набагато простіше закінчити закладки в веб-переглядачі, не створюючи десяток облікових записів синхронізації. github.com/gcb/AdbPaste (написано, поки чекав завантаження емулятора і пару онлайн-ігор-сесій ...! $% # повільний емулятор)
gcb

2
Здається, це не працює з деякими символами UTF - після спроби надсилання 'ლ\(ಠ益ಠლ\)'він просто говорить "Убитий" або, здається, успіх, і нічого не набирається, і я не маю нічого вставного в емуляторі. Метод SMS (я спробував у DDMS) навіть не працює тут, він відображається як "? (????)" :(
Groxx

2
Я теж не можу надсилати рядки з пробілами; Я повинен використовувати% s.
Петро

2
@Peter and Rose, чи є спосіб додати новий рядок? adb shell input text "This%sis%stext\nDoes%snot%work%here."друкує "Це текст \ nНе працює тут."
Firelord

84

Зазвичай я надсилаю текст, який хочу скопіювати у вигляді смс-повідомлення через telnet, а потім копіюю текст із смс-повідомлення. Ось як:

Підключення через 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, однак). Але приємна ідея :)
Тіма

@Mur - це чудова ідея. Дякую!
Джоел Бекхем

1
Для всіх, хто цікавиться, просто створили сценарій оболонки для цього: gist.github.com/2050770
Тодд Мазьєрський

7
Ця відповідь є надмірною. використання adb. Дивіться мою відповідь.
Роза Перроне

1
Завищення чи ні, але це дозволяє вставляти текст таким, яким він є, без потреби уникати спеціальних символів.
dmitry

28

Просто скопіюйте звідки завгодно, натисніть і утримуйте текст редагування телефону емулятора, куди ви хочете, щоб текст перейшов (типу, як ви натискали б і утримували, щоб вставити на фактичний телефон), з'явиться параметр PASTE, а потім PASTE.


3
Дякую! Однозначно моя улюблена відповідь. З поточною версією емулятора це дуже зручно. (У поточному емуляторі є налаштування в елементах керування емулятором у розділі "Налаштування", що дозволяє ділитися буфером обміну.)
albert c braun

Ось як вставити на Mac, оскільки командна клавіша за замовчуванням починає торкатися жестів.
Джим

19

Не впевнений, що це корисно, але, якщо вам потрібна довга URL-адреса з браузера настільних пристроїв, щоб відкрити її в мобільному браузері, ви можете надіслати SMS з цією URL-адресою та відкрити безпосередньо з програми повідомлень.

введіть тут опис зображення


Ви навіть можете скопіювати цей текст. Я знайшов цей спосіб одним із найпростіших і найскладніших!
Хірбод Бенам

Я отримав цю помилку: "Неможливо надіслати повідомлення, радіо вимкнено" (на MacBook)
Atetc,

Це однозначно корисно! Безпосередньо з того самого інтерфейсу емулятора, ні telnet, ні параметри. І випадок використання URL просто нагадує мої потреби. Дуже ефективне рішення.
Альберто Де Каро

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`"
гдерако

Я використовую 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

Переконайтеся, що в Налаштуваннях 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



2

Ви подивилися на C2DM? chrome2phone та fox2phone можуть надсилати посилання та текст буфера обміну та автоматично копіювати його на телефон. Також спробуйте скористатися оболонкою adb. Існує командна служба (/ system / bin / service), яка може використовувати сервіси (буфер обміну службових викликів ...). Коди транзакцій складають 1, 2 та 3 для getClipboardText, setClipboardText та hasClipboardText відповідно.


1

Використання емулятора Visual Studio, ось мій метод.

First Mound віртуальна SD карта:

  1. Скористайтеся додатковими інструментами (маленький значок) для емулятора та перейдіть на вкладку SD Card.
  2. Виберіть папку на своєму комп’ютері для синхронізації з віртуальною SD-карткою.
  3. Витягніть з SD-карти, яка створить структуру папки у вибраній папці.

Налаштуйте текстовий файл для передачі тексту:

  1. Використовуйте Google Play Store, щоб встановити текстовий редактор на ваш вибір
  2. Створіть текстовий файл, що містить ваш текст на своєму комп’ютері, у каталозі завантажень каталогу віртуальних sd-карт, створених раніше.

Щоразу, коли мені потрібно надсилати текст на дошку кліпів.

  1. Відредагуйте створений вище текстовий файл.
  2. Перейдіть до Додаткових інструментів (невеликий значок >>) та оберіть Push To SD Card.
  3. Відкрийте текстовий файл у встановленому нами текстовому редакторі та скопіюйте текст на дошку кліпів. (Утримуючи кнопку миші, коли відкриється діалогове вікно, виберіть "Вибрати все" та натисніть значок копіювання)

Після встановлення це досить легко повторити. Цей же спосіб застосовний до інших емуляторів, можливо, вам доведеться використовувати інший метод, щоб підштовхнути ваш текстовий файл до емулятора.


Також текстовий редактор, який я використовую, повідомляє мене, що вміст змінився, і запитує мене, чи хочу я його перезавантажити.
Олександр Хіггінс

1

(перетворення обговорення коментаря у відповідь)

єдине рішення для Windows: https://github.com/gcb/AdbPaste

написав це за пару годин, щоб вирішити цю проблему. Зараз я повернувся на 100% Linux, тому не соромтесь приєднатися до нього як дописувач або підтримуючий!


Дякую за це Зауважте іншим: надсилати кілька рядків повільно. У мене є сценарій LUA на 3 сторінки для завантаження, і це рішення займає приблизно 20 хвилин від джерела файлу. Google справді повинен вирішити цю потребу. Я знаю про додаток із клавіатурою з відкритим кодом, який має інтерфейс telnet, який був би набагато швидшим, але включення / вимкнення клавіатури стає додатковим кроком.
RoundSparrow hilltx

1
Щоб вирішити проблему зі швидкістю, згадану в моєму останньому коментарі: я виявив, що набагато швидше просто поставити крихітний додаток-помічник на пристрій, який може приймати вміст буфера обміну з команди adb Broadcast. Це заповнює буфер обміну замість прямого введення, як це робить AdbPaste - але мені вдалося покращити його для читання текстового файлу, і для мого 3-х сторінкового сценарію LUA зараз потрібно лише 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.