web-dev-qa-db-ja.com

Genymotionへの貼り付けAndroid Emulator

VMの外側からGenymotion Emulatorにコピーアンドペーストする方法はありますか?

47
bgcode

バージョン2.1. であるため、ホストから仮想デバイスへのテキストのコピー/貼り付けが可能です。 (単にGenymotionを更新するだけでは不十分であることに注意してください。2.1.0以降に更新した後に仮想デバイスを再作成する必要もあります。)

貼り付けは、仮想デバイスでロングタップ/クリック+ PASTEを使用して実行できます。

66
Daniel K

Genymotionバージョンがコピー/貼り付けをサポートしている場合は、コピー/貼り付けにmenu + Cおよびmenu + Vを使用できます(メニューキーは通常AltとCtrlの間にあり、マウスの右ボタンクリックとして機能します)。

4
user3764420

Genymotionはこのアクションをサポートしていないため(VirtualBoxを開いてVMの設定を行い、共有クリップボードを設定しても、使用しているGenymotion 2.0.3では動作しません)

したがって、別の方法を使用します。テキストが秘密でない場合は、 http://shrib.com/ のようなオンラインメモを使用できます

テキストをそこに貼り付けてからAndroid VMでリンクを開き、コピーしてから希望の場所に貼り付けます。いくつかの手順を実行します。ただし、長いテキストを入力したくない場合は、長いSQL)

4
lent

マウスの右下を長押しして離すと、貼り付けることができます

2

少し前にも同じようなニーズがありました。私の解決策は、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.
2
thayne