【问题标题】:Pasting into Genymotion Android Emulator粘贴到 Genymotion Android 模拟器
【发布时间】:2013-12-17 14:39:10
【问题描述】:

有没有办法从虚拟机外部复制粘贴到 Genymotion 模拟器中?

【问题讨论】:

    标签: android avd genymotion


    【解决方案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.
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

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

            【讨论】:

            • 抱歉,我没有 Mac,所以必须有人对此发表评论。我唯一能说的是,现在使用复制/粘贴功能很长时间后,我遇到了它突然不再工作的情况,我不得不先重新启动模拟器(可能是因为 adb 连接丢失了)。
            • 我有一台运行 Yosemite 的 mac,这对我来说在 Genymotion v2.3.1 上运行良好。
            • 有没有办法通过键盘快捷键进行复制/粘贴?像通常的 Cmd+C/Cmd+V 热键一样。
            • 我目前没有设置 Genymotion,但是 IIRC Ctrl/Cmd+C 可以将文本放入剪贴板,但是 Ctrl/Cmd+V 不起作用,您必须执行 long而是点击。您可能还想尝试answer below 中建议的热键。
            • hello genymotion 界面真的很慢,我怎样才能让它流畅?
            【解决方案6】:

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

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

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

            【讨论】:

              猜你喜欢
              • 2013-09-12
              • 2016-11-04
              • 2016-08-30
              • 2017-08-22
              • 1970-01-01
              • 2016-03-05
              • 2015-03-14
              • 2019-01-14
              • 2018-07-18
              相关资源
              最近更新 更多