53

有什么方法可以从 VM 外部复制并粘贴到 Genymotion 模拟器中?

4

6 回答 6

75

从2.1.0 版本开始可以将文本从主机复制/粘贴到虚拟设备中。(请注意,仅更新 Genymotion 是不够的,您还必须在更新到 2.1.0 或更高版本后重新创建虚拟设备。)

PASTE可以通过在虚拟设备中长按/单击 + 来执行粘贴。

于 2014-06-01T16:03:55.480 回答
4

由于 Genymotion 不支持此操作(即使您打开 VirtualBox,设置您的 VM 并设置共享剪贴板,它仍然不适用于我正在使用的 Genymotion 2.0.3)

所以,我用另一种方式,如果你的文字不是秘密,你可以使用像http://shrib.com/这样的在线笔记

将您的文本粘贴到那里,然后在 Android VM 上打开链接,复制并粘贴到您想要的位置。采取几个步骤,但如果您不想输入长文本(如我的,是长 SQL)

于 2013-12-23T10:00:17.457 回答
4

如果您的 Genymotion 版本支持复制/粘贴,您可以使用 menu+C 和 menu+V 进行复制/粘贴(菜单键通常位于 Alt 和 Ctrl 之间,用作鼠标右键单击)。

于 2014-06-22T09:45:59.870 回答
4

长按鼠标右下角松开,即可粘贴

于 2017-09-29T09:12:31.983 回答
1

编辑:不再需要此解决方案(复制粘贴在 2013 年对我不起作用,但现在可以使用。)

不久前我也有类似的需求。我的解决方案是编写一个快速应用程序,它侦听 UDP 端口并将进入该端口的任何内容转储到 SMS(文本)消息。然后从主机上我用 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 线程);然后发送你的短信,运行 netcat 和 UDP 的 -u 选项:

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.
于 2014-01-13T00:42:38.783 回答
0

长按鼠标右键直到出现粘贴符号

于 2020-04-24T16:02:16.493 回答