Есть ли способ скопировать и вставить из-за пределов виртуальной машины в эмулятор Genymotion?
Вставка в эмулятор Android Genymotion
Ответы (6)
Копирование/вставка текста с хоста на виртуальное устройство возможно, начиная с версии 2.1.0. (Обратите внимание, что простого обновления Genymotion недостаточно, вам также необходимо воссоздать виртуальное устройство после обновления до версии 2.1.0 или выше.)
Вставку можно выполнить долгим нажатием/кликом + PASTE
в виртуальном устройстве.
Поскольку Genymotion не поддерживает это действие (даже если вы откроете VirtualBox, настройки для своей виртуальной машины и установите общий буфер обмена, он все равно не работает с Genymotion 2.0.3, который я использую)
Итак, я использую альтернативный способ, если ваш текст не является секретным, вы можете использовать онлайн-заметку, например http://shrib.com/
Вставьте свой текст туда, затем откройте ссылку на виртуальной машине Android, скопируйте ее и вставьте в нужное место. Сделайте несколько шагов, но если вы не хотите вводить длинный текст (как у меня, это длинный SQL)
Если ваша версия Genymotion поддерживает копирование/вставку, вы можете использовать меню+C и меню+V для копирования/вставки (клавиша меню обычно находится между Alt и Ctrl и действует как щелчок правой кнопкой мыши).
нажмите и удерживайте правую нижнюю часть мыши и отпустите, затем вы можете вставить
EDIT: это решение больше не нужно (копирование-вставка не работало у меня еще в 2013 году, но работает сейчас).
У меня была аналогичная потребность некоторое время назад. Мое решение состояло в том, чтобы написать быстрое приложение, которое прослушивает порт UDP и сбрасывает все, что приходит на этот порт, в SMS (текстовое) сообщение. Затем с хост-машины я отправил его с помощью 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();
}
}
}
}
Запустите этот поток в приложении (например, вы можете использовать приветственный мир по умолчанию); Затем, чтобы отправить текстовое сообщение, запустите netcat с опцией -u для UDP:
echo "my message" | nc -u 192.168.56.101 4444
Не забудьте использовать здесь свой IP-адрес genymotion.
Я также пошел еще дальше и создал скрипт на Python, который берет данные из системного буфера обмена и выгружает их через UDP-порт. Это тоже может быть полезно, особенно если вы хотите отправить текст, отличный от 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.
нажмите и удерживайте правую кнопку мыши, пока не появится знак вставки