VMの外側からGenymotion Emulatorにコピーアンドペーストする方法はありますか?
バージョン2.1. であるため、ホストから仮想デバイスへのテキストのコピー/貼り付けが可能です。 (単にGenymotionを更新するだけでは不十分であることに注意してください。2.1.0以降に更新した後に仮想デバイスを再作成する必要もあります。)
貼り付けは、仮想デバイスでロングタップ/クリック+ PASTE
を使用して実行できます。
Genymotionバージョンがコピー/貼り付けをサポートしている場合は、コピー/貼り付けにmenu + Cおよびmenu + Vを使用できます(メニューキーは通常AltとCtrlの間にあり、マウスの右ボタンクリックとして機能します)。
Genymotionはこのアクションをサポートしていないため(VirtualBoxを開いてVMの設定を行い、共有クリップボードを設定しても、使用しているGenymotion 2.0.3では動作しません)
したがって、別の方法を使用します。テキストが秘密でない場合は、 http://shrib.com/ のようなオンラインメモを使用できます
テキストをそこに貼り付けてからAndroid VMでリンクを開き、コピーしてから希望の場所に貼り付けます。いくつかの手順を実行します。ただし、長いテキストを入力したくない場合は、長いSQL)
マウスの右下を長押しして離すと、貼り付けることができます
少し前にも同じようなニーズがありました。私の解決策は、UDPポートでリッスンし、そのポートに着信するすべてのものをSMS(テキスト)メッセージにダンプするクイックアプリケーションを作成することでした。シェル。
UDPリスナーアプリコード:
package com.example.messagemyself;
import Java.net.DatagramPacket;
import Java.net.DatagramSocket;
import Java.net.SocketException;
import Android.app.Service;
import Android.content.ContentValues;
import Android.net.Uri;
import Android.util.Log;
public class GetUDPData extends Thread {
private static final String TAG = "GetUDPData";
private DatagramSocket datagramSocket;
private DatagramPacket packet;
boolean running = true;
Service srv;
public GetUDPData(Service s) {
srv = s;
}
public void done() {
datagramSocket.close();
running = false;
}
@Override
public void run() {
try {
datagramSocket = new DatagramSocket(4444);
datagramSocket.setSoTimeout(0);
byte[] buffer = new byte[1024];
packet = new DatagramPacket(buffer, buffer.length);
} catch (SocketException e) {
e.printStackTrace();
}
while(running) {
try {
Log.d(TAG,"Receiving");
datagramSocket.receive(packet);
String message = new String(packet.getData(),0,packet.getLength());
Log.d(TAG,"Received "+message);
ContentValues values = new ContentValues();
values.put("address", "12345");
values.put("body", message);
// Post to SMS inbox
srv.getContentResolver().insert(Uri.parse("content://sms/inbox"), values);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
アプリでこのスレッドを実行します(たとえば、デフォルトのhello-worldを使用できます)。次に、テキストメッセージを送信するには、UDPの-uオプションを指定してnetcatを実行します。
echo "my message" | nc -u 192.168.56.101 4444
ここでgenymotionのIPアドレスを使用することを忘れないでください。
さらに一歩進んで、システムクリップボードからデータを取得してUDPポートからダンプするpythonスクリプトを作成しました。これは、特に非ASCIIを送信する場合にも役立ちます。テキストまたは何か(私の場合、私は日本語の文字を送信し、Windowsシェルをセットアップして文字を表示する必要がありましたが、気の遠くなることを望まない偉業であることが判明しました。)
とにかく、ここにスクリプトがあります。それを.pyファイルにダンプし、ダブルクリックしてクリップボードの内容をUDPソケットに送信します。
from Tkinter import Tk
r = Tk()
datatosend = r.selection_get(selection = "CLIPBOARD")
r.destroy()
import time
import socket
UDP_IP = "192.168.56.101"
UDP_PORT = 4444
print "sending SMS: %s"%datatosend
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # UDP
sock.sendto(datatosend, (UDP_IP, UDP_PORT))
time.sleep(3)
# The sleep is not necessary, but I like it since you can see the
# message for a bit before the Shell exits.