Android Emulatorにテキストを貼り付けます


316

(デスクトップの)クリップボードのコンテンツをEditViewAndroid Emulator にコピー/貼り付ける簡単な方法はありますか?

(開発/テストを容易にするため)


2
re Joel Beckham-send SMS: >私は通常、コピーしたいテキストをSMSメッセージとして送信します> Telnetで送信してから、SMSメッセージからテキストをコピーします。telnetを使用する代わりに、eclipseを使用して、エミュレーターで着信smsをシミュレートできます。eclipseandroidツール(バージョン17はおそらく古いバージョンでも可能)で、DDMSパースペクティブを開きます。[エミュレータコントロール] / [テレフォニーアクション]で、着信SMSをシミュレートできます>エミュレータがメッセージを受信したら、コピーして貼り付けることができます。
k3b 2012

2
今この質問を見ている人のために; 現在Androidでネイティブにサポートされています。最新のAndroid Studio / Emulatorを使用していることを確認してください:stackoverflow.com/a/42678005/207552
bschandramohan

3
テキストフィールドを長押しして、[貼り付け]を選択します
onmyway133 '13

回答:


126

Androidエミュレーターのv25.3.xおよびx86 Google APIエミュレーターシステムイメージAPIレベル19(Android 4.4-Kitkat)以降では、マウスまたはキーボードを使用してデスクトップからコピーして貼り付けることができます。

この機能はAndroid Studio 2.3で発表されました

Android Emulatorでコピーして貼り付ける


27
2018年1月の時点で、現在のエミュレータバージョンに既知のバグがあり、時々動作しなくなります。回避策として、「...」アイコンをクリックして「設定」に移動し、「クリップボードの共有を有効にする」設定のオンとオフを切り替えます。(ソース
mhsmith

@mhsmith Androidコマンドラインツールを使用してコマンドラインから、または~/.android/avd/ .iniファイルを編集して、それをどのように行います(クリップボードの共有をリセット)。
クロエ

@Chloeこの問題はすでに実行中のエミュレータに関連しているため、これらのいずれかが違いを生むとは思えません。
mhsmith

1
Macにどのように貼り付けますか?Cmdを押すと、マルチタッチが表示されます。Cmd-Vは何もしません。
jcollum 2018年

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
今日は数時間かかって、スペースの問題に関するpythonの回避策を書きました。多数の同期アカウントを作成する必要なく、ブックマークレットをストックブラウザーに終了するのがはるかに簡単になりました。github.com/gcb/AdbPaste(!ロードとオンラインセッションゲーミングカップル... $%の#遅いエミュレータにエミュレータを待っている間書かれた)
GCB

2
これは一部のUTF文字では機能しないようです。送信を試みた後'ლ\(ಠ益ಠლ\)'、「強制終了しました」と表示されるか、成功したように見え、何も入力されていないか、エミュレータに貼り付け可能なものがありません。SMSメソッド(DDMSから試しました)はここでも機能していないようです。「?(????)」と表示されます:(
Groxx

2
私もスペースを含む文字列を送信できません。%sを使用する必要があります。
Peter 14

2
@ピーターとローズ、新しい行を追加する方法はありますか?adb shell input text "This%sis%stext\nDoes%snot%work%here."「これはテキストです\ nここでは機能しません。」と出力します。
Firelord、2015年

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を必要としません...あなたはddmsからSMSを送ることができます(しかし、ddmsはTelnetを必要とします)。しかし素晴らしいアイデア:)
Tima

@Mur-それは素晴らしいアイデアです。ありがとう!
ジョエルベッカム

1
興味のある方は、これを行うためのシェルスクリプトを作成してください:gist.github.com/2050770
Todd Mazierski

7
この答えはやりすぎです。使用しますadb。私の答えを見てください。
ローズペローネ2013年

1
やりすぎかどうか。ただし、特殊文字をエスケープする必要なく、テキストをそのまま貼り付けることができます。
ドミトリー2015

28

どこからでもコピーし、エミュレータの電話の編集テキストをクリックして、テキストを移動する場所で押し続けます(実際の電話に押し続けるのと同じようなものです)。PASTEオプションが表示され、次にPASTEが表示されます。


3
ありがとうございました!間違いなく私のお気に入りの答え。エミュレータの現在のバージョンでは、これは非常に便利です。(現在のエミュレーターの設定は、[設定]の[エミュレーターコントロール]にあり、クリップボードの共有が可能です。)
albert c braun

コマンドキーはデフォルトでタッチジェスチャーを開始するので、これはMacに貼り付ける方法です。
ジム

19

便利かどうかはわかりませんが、デスクトップブラウザから長いURLをモバイルブラウザで開く必要がある場合は、そのURLでSMSを送信し、メッセージアプリから直接開くことができます。

ここに画像の説明を入力してください


そのテキストをコピーすることもできます。私はこのようにして、最もシンプルでトリッキーな方法の1つを見つけました。
Hirbod Behnam 2018

「メッセージを送信できません。ラジオがオフになっています」というエラーが表示されました(MacBook)
Atetc

それは間違いなく便利です!まったく同じエミュレーターのUIから、telnetもパラメーターもありません。そして、URLのユースケースは私のニーズにぴったりです。非常に効果的なソリューションです。
Alberto De Caro

11

MacでAndroid Studioを使用している場合は、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)、エイリアスをどこでも使用できるようになります。または、bashユーザー(MacOSのデフォルト)の場合は、ターミナルで次のコマンドを実行して設定できます。

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

またはalias ap="adb shell input text `pbpaste`"
gderaco 2017年

Windowsとエイリアスを使用して'alias' is not recognized as an internal or external command, operable program or batch file. 何をすべきか
shareef '25 / 09/25

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)があります(サービスコールクリップボード...)。トランザクションコードは、getClipboardText、setClipboardText、およびhasClipboardTextのそれぞれ1、2、および3です。


1

Visual Studio Emulatorを使用して、これが私の方法です。

まず仮想sdカードをマウンドします:

  1. エミュレータの追加ツール(小さい>>アイコン)を使用して、[SDカード]タブに移動します。
  2. 仮想SDカードと同期するコンピューター上のフォルダーを選択します。
  3. SDカードからプルすると、選択したフォルダにフォルダ構造が作成されます。

テキストを転送するテキストファイルを設定します。

  1. Google Playストアを使用して、選択したテキストエディターをインストールします
  2. 以前に作成した仮想SDカードディレクトリのダウンロードディレクトリに、コンピューター上のテキストを含むテキストファイルを作成します。

クリップボードにテキストを送信する必要があるときはいつでも。

  1. 上記で作成したテキストファイルを編集します。
  2. [その他のツール](小さい>>アイコン)に移動し、[SDカードにプッシュ]を選択します。
  3. インストールしたテキストエディターでテキストファイルを開き、テキストをクリップボードにコピーします。(ダイアログが開いたらマウスを押したまま、すべて選択を選択してからコピーアイコンをクリックします)

一度設定すれば、簡単に繰り返すことができます。テキストファイルをエミュレーターにプッシュするために別の方法を使用する必要がある場合があるため、同じ方法を他のエミュレーターに適用できます。


また、私が使用するテキストエディターは、コンテンツが変更されたことを通知し、再読み込みするかどうかを尋ねます。
アレクサンダーヒギンズ

1

(コメントディスカッションを回答に変換)

Windowsでの唯一のソリューション:https : //github.com/gcb/AdbPaste

この問題を回避するために数時間でそれを書いた。私は100%linuxに戻ったので、貢献者またはメンテナとして自由に参加してください!


これをありがとう。他の人への注意:複数の行を送るのは遅いです。アップロードする3ページのLUAスクリプトがあり、このソリューションはファイルソースから20分ほどかかります。Googleは本当にこのニーズに対処する必要があります。オープンソースのキーボードアプリでtelnetインターフェイスがはるかに高速になることを知っていますが、キーボードのイン/アウトの切り替えが追加の手順になります。
RoundSparrow hilltx

1
私の最後のコメントで述べた速度の問題を解決するには:adbブロードキャストコマンドからクリップボードコンテンツを取得できる小さなヘルパーアプリをデバイスに配置する方がはるかに速いことがわかりました。これにより、AdbPasteのように直接入力する代わりにクリップボードにデータが入力されます。ただし、テキストファイルを読み取るように拡張でき、3ページのLUAスクリプトの場合、adbコマンドからAndroidに移行するまでに1〜2秒しかかかりません。テキストボックス。アプリはクリッパーと呼ばれ、テキストファイルを読み取るように拡張されています。github.com
RoundSparrow /

1

書き込みコマンド:adbデバイス(現在接続されているデバイスが一覧表示されます)テキストを書き込むテキストボックスを選択します。コマンドの書き込み:adb shell input text "Yourtext"(このコマンドを実行するために接続されているデバイスが1つだけであることを確認してください)完了しました!


0

私は同じ問題の解決策を探してここに来て、この問題を解決するためのAndroidアプリケーションを作成することになりました。http://www.box.net/shared/6203bn441bfltkimajmkからダウンロードできます。[設定]メニューからURLを指定して、Web応答を簡単に変更できる場所を指定するだけです。Web応答の最初の行は、エミュレータのクリップボードにコピーされます。詳細については、http://agilesc.barryku.com/?p = 255を参照してください


1
ここに実行可能コードを投稿しないでください。ソースコードははるかに良いでしょう。
lowellk 2013

0

MacおよびLinuxの場合は、この関数をaliases_bashファイルで試してください(Macの場合は/ etc / aliases_bashにあります。必ず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の置換文字列についてEliotに称賛。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.