Вставить текст в эмулятор Android

Есть ли простой способ скопировать / вставить содержимое буфера обмена (рабочего стола) в EditView в эмуляторе Android?

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


person ankitjaininfo    schedule 02.08.2010    source источник
comment
re Joel Beckham-send SMS: ›Обычно я отправляю текст, который хочу скопировать, как SMS-сообщение› через telnet, а затем копирую текст из SMS-сообщения. Вместо использования telnet вы можете использовать eclipse для имитации входящего sms в эмуляторе: в инструментах eclipse android (версия 17, возможно, также в более старых версиях) откройте DDMS-Perspective. В разделе «Управление эмулятором» / «Действия с телефонией» вы можете имитировать входящее SMS-сообщение. ›После того, как эмулятор получит сообщение, вы можете скопировать его и› вставить куда угодно.   -  person k3b    schedule 06.04.2012
comment
Для всех, кто сейчас смотрит на этот вопрос; теперь он изначально поддерживается в Android - просто убедитесь, что вы используете последнюю версию Android Studio / Emulator, как указано здесь: stackoverflow.com/a/42678005 / 207552   -  person bschandramohan    schedule 30.05.2017
comment
Нажмите и удерживайте текстовое поле и выберите Вставить.   -  person onmyway133    schedule 13.03.2019


Ответы (21)


С v25.3.x эмулятора Android и x86 эмулятора Google API системные изображения API уровня 19 (Android 4.4 - Kitkat) и выше вы можете просто скопировать и вставить со своего рабочего стола с помощью мыши или клавиатуры.

Эта функция была анонсирована в Android Studio 2.3.

 Скопируйте и вставьте с помощью эмулятора Android

person Jamal Eason    schedule 08.03.2017
comment
По состоянию на январь 2018 года в текущей версии эмулятора есть известная ошибка, из-за которой он иногда перестает работать. В качестве временного решения щелкните значок ..., перейдите в раздел «Настройки» и включите или выключите параметр «Разрешить общий доступ к буферу обмена». (Источник) - person mhsmith; 11.01.2018
comment
@mhsmith Как это сделать (сбросить общий доступ к буферу обмена) из командной строки с помощью инструментов командной строки Android или путем редактирования файлов ~/.android/avd/ .ini? - person Chloe; 15.01.2018
comment
@Chloe Поскольку эта проблема связана с уже работающим эмулятором, я сомневаюсь, что что-то из этого изменит ситуацию. - person mhsmith; 16.01.2018
comment
Я только что пробовал, но не работает! в Android Studio 3.1 - person Avinash; 07.03.2018
comment
Как наклеить на макинтош? Нажатие Cmd вызывает мультитач. Cmd-V ничего не делает. - person jcollum; 08.03.2018
comment
@jcollum щелкните левой кнопкой мыши и удерживайте текстовое поле, в которое хотите вставить, нажмите «Вставить». cmd + v не будет работать, как и ctrl + v, я полагаю. - person Liam Dawson; 18.06.2018

В терминале введите adb shell input text 'my string here. With some characters escaped like \$ that'

Обратите внимание, что альтернативным методом включения пробелов в текст является замена каждого символа space на %s.

person Rose Perrone    schedule 17.05.2013
comment
Если вы используете Mac, вы можете еще проще вставить содержимое буфера обмена: adb shell input text "pbpaste" - person lowellk; 05.08.2013
comment
отлично работает на Linux, но кто-нибудь знает, почему окна жалуются, когда у меня есть пробелы? попытался убежать от них в аваль. - person gcb; 28.08.2013
comment
закончилось тем, что сегодня потребовалось несколько часов, и я написал обходной путь на python для проблем с пробелами. Теперь намного проще закрывать букмарклеты в стандартном браузере, не создавая десятка учетных записей синхронизации. github.com/gcb/AdbPaste (написано, пока пользователь ждал загрузки эмулятора и пару сеансов онлайн-игр ...! $% # медленный эмулятор) - person gcb; 28.08.2013
comment
adb означает Android Debug Bridge (adb), его можно найти в ‹sdk› / platform-tools / - person Mike R; 06.11.2013
comment
Любая причина, по которой я не могу заставить его работать со строкой, содержащей пробелы? Я пробовал как одинарные, так и двойные кавычки. "Hello World" отправляет только hello на мой avd. - person lampwins; 25.11.2013
comment
Похоже, это не работает с некоторыми символами UTF - после попытки отправить 'ლ\(ಠ益ಠლ\)' он просто говорит «Убито» или кажется успешным, и ничего не набирается, и у меня нет ничего, что можно вставить в эмулятор. Метод SMS (я пробовал из DDMS) здесь даже не работает, отображается как? (????) :( - person Groxx; 08.05.2014
comment
Я тоже не могу отправлять строки с пробелами; Я должен использовать% s. - person Peter; 29.07.2014
comment
Я создал SendToAndroid.bat, который содержит следующее: adb shell input text '%*' - person Peter; 29.07.2014
comment
@ Питер и Роза, есть ли способ добавить новую строку? adb shell input text "This%sis%stext\nDoes%snot%work%here." печатает Это текст \ nНе работает здесь .. - person Firelord; 30.11.2015
comment
@gcb Преобразовать в ответ! - person Alex; 20.06.2016
comment
Псевдоним для Mac для вставки прямо из буфера обмена (мне не удалось заставить работать фрагмент @lowellk): alias adbpaste="pbpaste|sed 's/ /%s/g'|xargs adb shell input text". Не обрабатывает все специальные символы, но этого было достаточно для моих целей (вставка адресов электронной почты и буквенно-цифровых строк). - person Eliot; 07.07.2016
comment
@Eliot Не удалось заставить работать ваш псевдоним, но работает при преобразовании в функцию. Спасибо! stackoverflow.com/a/39814283/2301224 - person Baker; 02.10.2016
comment
В Linux вставьте текст из буфера обмена adb shell input text "'"$(xclip -selection c -o)"'" - person Andrey Izman; 11.08.2017

Обычно я отправляю текст, который хочу скопировать, как смс-сообщение через 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

(Вы можете просто придумать номер телефона отправителя)

Это очень хорошо работает для ссылок, поскольку сообщение автоматически преобразуется в гиперссылку, по которой вы можете щелкнуть, не копируя / вставляя ее в браузер.

Как только эмулятор получит сообщение, вы можете скопировать его и вставить в любое место.

person Joel Beckham    schedule 01.09.2011
comment
вам даже не нужен telnet ... вы можете отправлять sms с ddms (но ddms, тем не менее, нужен telnet). Но хорошая идея :) - person Tima; 12.12.2011
comment
@Mur - отличная идея. Спасибо! - person Joel Beckham; 12.12.2011
comment
Действительно хорошая идея, но если честно: нет. Не стоит тратить силы на мелкий текст o.O - person nuala; 12.03.2012
comment
Для всех, кто заинтересован, просто создал сценарий оболочки для этого: gist.github.com/2050770 - person Todd Mazierski; 16.03.2012
comment
+1 почти именно то, что я искал. Примечание: вы можете отправить смс из eclipse. (См. Мой ответ ниже) - person k3b; 06.04.2012
comment
хороший совет. Метод i, конечно, запутанный и причудливый (по сравнению с ctrl + V), но да, - person Alien Life Form; 22.02.2013
comment
Это излишний ответ. используйте 1_. Смотрите мой ответ. - person Rose Perrone; 18.05.2013
comment
@RosePerrone или Джоэл, есть ли способ скопировать текст из эмулятора обратно на рабочий стол? - person karl; 01.07.2013
comment
Благодарю за ваш ответ. Я считаю, что это лучшее решение при отправке ссылок на устройство. Вместо того, чтобы копировать их в браузер, вы можете просто щелкнуть их в приложении для обмена сообщениями. - person Dick Lucas; 20.06.2014
comment
Настоящий простой ответ у меня не сработал (правда, прошло 2 года). Ваш делает! Моя конвейерная обработка 2 цента для Mac / Буфер обмена / Ascii / Многострочный (предупреждение: требуется 1+ новая строка): echo sms send 0 `pbpaste | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/\\\\n/g'` | telnet localhost 5554 - person eruve; 26.03.2015
comment
Перебор или нет, но он позволяет вставлять текст как есть, без необходимости экранировать специальные символы. - person dmitry; 14.09.2015
comment
что это за sms команда? в моем telnet на macos этого нет - person Dominic; 27.07.2017
comment
@DominicTobias Я считаю, что команда sms находится в эмуляторе на другом конце сеанса Telnet. Однако не могу вспомнить, и у меня больше нет этой настройки, чтобы проверить это. - person Joel Beckham; 09.09.2017

Просто скопируйте откуда угодно, нажмите и удерживайте текст редактирования телефона-эмулятора там, где вы хотите, чтобы текст был помещен (вроде того, как вы нажимаете и удерживаете, чтобы вставить на настоящий телефон), появится опция ВСТАВИТЬ, а затем ВСТАВИТЬ.

person Raymond Wachaga    schedule 02.11.2017
comment
Спасибо! Определенно мой любимый ответ. С текущей версией эмулятора это очень удобно. (В текущем эмуляторе есть параметр в элементах управления эмулятора в разделе «Настройки», который позволяет совместно использовать буфер обмена.) - person albert c braun; 05.04.2018
comment
Вот как выполняется вставка на Mac, поскольку по умолчанию командная клавиша запускает сенсорные жесты. - person Jim; 09.06.2018

Не уверен, что это полезно, но, если вам нужен длинный URL-адрес из настольного браузера для открытия в мобильном браузере, вы можете отправить SMS с этим URL-адресом и открыть его прямо из приложения для сообщений.

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

person TEH EMPRAH    schedule 27.07.2017
comment
Вы даже можете скопировать этот текст. Я нашел этот способ одним из самых простых и сложных! - person Hirbod Behnam; 21.02.2018
comment
У меня такая ошибка: не удается отправить сообщение, радио выключено (на MacBook) - person Atetc; 05.04.2018
comment
Это определенно полезно! Прямо из того же UI эмулятора, без telnet, без параметров. И вариант использования URL соответствует моим потребностям. Очень эффективное решение. - person Alberto De Caro; 01.05.2018

Если вы используете 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'
person Andrew    schedule 03.08.2016
comment
Либо используйте псевдоним терминала, либо добавьте ~/Library/Android/sdk/platform-tools/ в переменную PATH, чтобы упростить использование. - person ThomasW; 13.11.2020

Я устал от этой проблемы, поэтому я просто сделал этот псевдоним, чтобы справиться с ней:

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

Затем, когда вы откроете новое окно терминала, набрав «ap», вы вставите все, что находится в вашем буфере обмена, в активно выбранное текстовое поле эмулятора.

Настраивать

Просто добавьте его в свой профиль (для большинства пользователей это ~/.bash_profile, для пользователей zsh это ~/.zshrc), чтобы псевдоним был доступен повсюду. В качестве альтернативы, если вы являетесь пользователем bash (по умолчанию для MacOS), вы можете запустить следующую команду в терминале, чтобы настроить его для вас:

echo "alias ap='pbpaste | xargs adb shell input text'" >> ~/.bash_profile && source ~/.bash_profile
person gMale    schedule 07.10.2016
comment
я использую окна и псевдоним 'alias' is not recognized as an internal or external command, operable program or batch file. что делать - person shareef; 25.09.2018
comment
@shareef В любом случае это не сработает, потому что pbpaste специфичен для macOS, но, вероятно, в Windows есть что-то похожее. alias также может быть недоступен в зависимости от используемой оболочки. - person ThomasW; 13.11.2020

Только для уровня API> = 24

Скопируйте любой текст со своего локального компьютера, а затем просто запустите эту команду

adb shell input keyevent 279

Убедитесь, что в настройках эмулятора Android включены параметры Enable Clipboard Sharing.

person Rishabh Arya    schedule 13.06.2019

Вы также можете сделать это без обходных путей. Просто нажмите и удерживайте немного в поле ввода, пока не появится уведомление о вставке, а затем нажмите «Вставить». Вот и все!

person nana janashia    schedule 16.12.2018

Для пользователей Mac НАМНОГО проще сделать это прямо в эмуляторе Android:

  • нажмите и удерживайте секунду или две
  • отпустить нажмите
  • появится опция «вставить», как показано ниже.

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

person LMG    schedule 29.12.2020

Может быть, это немного сложно, но вы можете отправить смс на эмулятор с помощью элемента управления эмулятором. тогда вам не нужно повторно вводить весь текст, если он длиннее, и вы можете скопировать и вставить его в эмулятор.

Другой способ: подключиться к эмулятору через «telnet localhost PORT», а затем использовать отправку аппаратных событий для отправки события ввода текста в эмулятор (должен быть UTF-8). посмотрите это

person mad    schedule 17.12.2010

В Linux текст будет вставлен прямо из буфера обмена.

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

Также очень полезно создать глобальную комбинацию клавиш с помощью этой команды, например, Ctrl + Shift + Super + V

person Andrey Izman    schedule 11.08.2017

Просто нажмите левую кнопку мыши на 2 или 3 секунды, появится кнопка вставки. Нажмите кнопку «Вставить», и тест будет скопирован без проблем.

person Toufic    schedule 18.08.2020

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

person yingted    schedule 05.06.2011

Сделано это приложение для Windows, которое позволяет пользователям копировать вставку в эмуляторы Android или подключенные устройства с помощью визуального интерфейса. https://github.com/Florin-Birgu/Android-Copy-Paste

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

person Florin Birgu    schedule 30.07.2017
comment
Спасибо, что поделился! - person Freshchris; 14.08.2017

Есть простой способ

  1. Активируйте клавиатуру в эмуляторе.
  2. Щелкните место, которое вы хотите вставить, и нажмите и удерживайте (нажимайте, пока не увидите слово ВСТАВИТЬ)
  3. Выполнено.

См. Исходный ответ: https://www.quora.com/How-do-I-paste-text-from-my-computer-to-Android-emulator

person nirojan    schedule 17.09.2020

Используя эмулятор Visual Studio, вот мой метод.

Первый курган виртуальная sd карта:

  1. Используйте дополнительные инструменты (маленький значок >>) для эмулятора и перейдите на вкладку SD-карта.
  2. Выберите папку на вашем компьютере для синхронизации с виртуальной SD-картой.
  3. Вытащите с SD-карты, что создаст структуру папок в выбранной папке.

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

  1. Используйте Google Play Store, чтобы установить текстовый редактор по вашему выбору
  2. Создайте текстовый файл, содержащий ваш текст, на вашем компьютере в каталоге загрузок каталога виртуальной SD-карты, который вы создали ранее.

Когда мне нужно отправить текст в буфер обмена.

  1. Отредактируйте текстовый файл, созданный выше.
  2. Перейдите в Дополнительные инструменты (маленький значок >>) и выберите «Отправить на SD-карту».
  3. Откройте текстовый файл в текстовом редакторе, который я установил, и скопируйте текст в буфер обмена. (Удерживая мышь, когда откроется диалоговое окно, выберите «Выбрать все» и затем щелкните значок «Копировать»)

После настройки довольно легко повторить. Тот же метод будет применим к другим эмуляторам, поскольку вам может потребоваться другой метод для передачи текстового файла в эмулятор.

person Alexander Higgins    schedule 21.05.2016
comment
Кроме того, текстовый редактор, который я использую, уведомляет меня об изменении содержимого и спрашивает, хочу ли я его перезагрузить. - person Alexander Higgins; 22.05.2016

(преобразование обсуждения комментария в ответ)

единственное решение для Windows: https://github.com/gcb/AdbPaste

написал это за пару часов, чтобы обойти эту проблему. Теперь я вернулся на 100% Linux, так что не стесняйтесь присоединяться к нему в качестве участника или сопровождающего!

person gcb    schedule 20.06.2016
comment
Спасибо за это. Примечание для других: отправка нескольких строк выполняется медленно. У меня есть 3-страничный сценарий LUA для загрузки, и это решение занимает около 20 минут от источника файла. Google действительно необходимо удовлетворить эту потребность. Я знаю приложение Keyboard с открытым исходным кодом, которое имеет интерфейс telnet, который был бы намного быстрее, но включение / выключение клавиатуры становится дополнительным шагом. - person RoundSparrow hilltx; 24.05.2017
comment
Чтобы решить проблему скорости, упомянутую в моем последнем комментарии: я обнаружил, что намного быстрее просто установить крошечное вспомогательное приложение на устройство, которое может принимать содержимое буфера обмена из команды широковещательной передачи adb. Это заполняет буфер обмена вместо прямого ввода, как это делает AdbPaste, но я смог улучшить его для чтения текстового файла, а для моего 3-страничного сценария LUA теперь требуется всего 1 или 2 секунды, чтобы перейти от команды adb к ее наличию в Android. текстовое окно. Приложение называется clipper и расширено для чтения текстового файла здесь: github.com/RoundSparrow/clipper - person RoundSparrow hilltx; 25.05.2017

Команда записи: adb devices (в нем будут перечислены устройства, подключенные в данный момент). Выберите текстовое поле, в которое вы хотите ввести текст. Команда записи: adb shell input text "Yourtext" (убедитесь, что для выполнения этой команды подключено только одно устройство) Готово!

person Arpan24x7    schedule 23.01.2017

Я пришел сюда в поисках решения той же проблемы и в итоге написал приложение для Android, чтобы решить эту проблему. Вы можете скачать его со страницы http://www.box.net/shared/6203bn441bfltkimajmk. Просто укажите URL-адрес через меню настроек, чтобы указать место, где вы можете легко изменить веб-ответ. Первая строка веб-ответа будет скопирована для вас в буфер обмена вашего эмулятора. Более подробную информацию можно найти на http://agilesc.barryku.com/?p=255. .

person barryku    schedule 29.06.2011
comment
Вы не должны размещать здесь исполняемый код. Исходный код был бы намного лучше. - person lowellk; 05.08.2013

Для 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.

person Baker    schedule 02.10.2016