有没有办法从虚拟机外部复制并粘贴到Genymotion模拟器中?
有没有办法从虚拟机外部复制并粘贴到Genymotion模拟器中?
PASTE
进行粘贴操作。由于Genymotion不支持此操作(即使您打开VirtualBox,为虚拟机设置共享剪贴板,它在我使用的Genymotion 2.0.3上仍无法使用),因此我使用了另一种方法。如果您的文本不是机密的,您可以使用在线便签工具,如http://shrib.com/。
将您的文本粘贴到该工具中,然后在Android虚拟机上打开链接,在其上复制并粘贴到您想要的位置。这需要几个步骤,但如果您不想键入长文本(例如我的SQL语句很长),这是一个好方法。
长按鼠标右下角并松开,然后就可以粘贴了。
编辑:这个解决方案现在不再必要(2013年时复制粘贴对我无效,但现在有效)。
我以前也有类似的需求。我的解决方案是编写一个快速应用程序,监听一个UDP端口,并将该端口收到的任何内容转储到短信(文本)消息中。然后从主机上,我可以使用shell中的netcat发送它。
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 应用程序); 然后,要发送您的文本消息,请使用 -u 选项运行 netcat 以进行 UDP:
echo "my message" | nc -u 192.168.56.101 4444
不要忘记在此处使用您的Genymotion IP地址。
我还进一步创建了一个Python脚本,该脚本从系统剪贴板中获取数据并将其转储到UDP端口。这也可能很有用,特别是如果您想发送非ASCII文本或其他内容(在我的情况下,我需要发送日语字符,并且设置Windows shell以显示这些字符是一项艰巨的任务,我不希望让心脏虚弱的人去尝试。)
无论如何,这是脚本。将其转储到.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.
长按鼠标右键,直到出现粘贴标志