我想從使用USB連接到我的電腦的android手機發送短信。我起訴usb4Java庫。根據鏈接usb4java-javax-examples,我已經訪問了手機併發送了adb命令給手機。這裏是代碼和輸出。是否可以使用adb協議從android手機發送短信
public static void main(String[] args) throws Exception {
....
AdbDevice device = devices.get(0);
device.open();
try {
// Send the connect message
Message message = new ConnectMessage(ConnectMessage.SYSTEM_TYPE_HOST, "12345678", "ADB Demo");
System.out.println("Sending: " + message);
device.sendMessage(message);
boolean connected = false;
while (!connected) {
message = device.receiveMessage();
System.out.println("Received: " + message);
// If connect message has been received then we are finished
if (message instanceof ConnectMessage) {
connected = true;
}
....
} // end of while
// Open "sync:"
message = new OpenMessage(1, "sync:");
System.out.println("Sending: " + message);
device.sendMessage(message);
message = device.receiveMessage();
System.out.println("Received: " + message);
if (!(message instanceof OkayMessage)) {
System.err.println("Open failed");
System.exit(1);
}
int remoteId = ((OkayMessage) message).getRemoteId();
// Close
message = new CloseMessage(1, remoteId);
System.out.println("Sending: " + message);
device.sendMessage(message);
message = device.receiveMessage();
System.out.println("Received: " + message);
}
}
這裏是我收到
Sending: CONNECT(0x01000000, 4096, "host:12345678:ADB Demo")
Received: CONNECT(0x01000000, 4096, "device::")
Sending: OPEN(1, "sync:")
Received: OKAY(1, 1)
Sending: CLOSE(1, 1)
Received: CLOSE(0, 1)
是否有已發送的任何方式,我用ADB protpcol和SMS發送短信指令到Android手機的輸出。像SENDSMS(int number, String textMessage)
。
或者還有其他方法可以做到嗎?
感謝
**編輯
我在這裏做什麼,但我越來越接近(0,1)。不知道是什麼做錯了
message = new OpenMessage(1, "shell:command");
System.out.println("Sending: " + message);
device.sendMessage(message);
message = device.receiveMessage();
System.out.println("Received: " + message);
if (!(message instanceof OkayMessage)) {
System.err.println("Open failed");
System.exit(1);
}
int remoteId = ((OkayMessage) message).getRemoteId();
int localId = ((OkayMessage) message).getLocalId();
String num = "00923424700007";
String text = "Hello World";
message = new WriteMessage(remoteId, localId, "am start -a android.intent.action.SENDTO -d sms:"+num+" --es sms_body \""+text+"\" --ez exit_on_sent true");
System.out.println("Sending: " + message);
device.sendMessage(message);
message = device.receiveMessage();
System.out.println("Received: " + message);
if (!(message instanceof OkayMessage)) {
System.err.println("Open failed");
System.exit(1);
}
remoteId = ((OkayMessage) message).getRemoteId();
localId = ((OkayMessage) message).getLocalId();
我在行做錯了什麼
message = new WriteMessage(remoteId, localId, "am start -a android.intent.action.SENDTO -d sms:"+num+" --es sms_body \""+text+"\" --ez exit_on_sent true");
感謝
電話號碼不是'int':例如'0033 ...'。你需要使用一個字符串來表示它。 – Henry
檢查了這一點:http://stackoverflow.com/q/4043490/244611 –