admin 管理员组文章数量: 887019
当使用数据线把手机插入到电脑以后,可以获取到手机的设备标识,即deviceId。通过deviceID,使用adb命令,就可以和指定的手机进行数据的传输。
使用adb命令可以使用电脑往指定的手机上push数据,也可以pull指定手机上的数据。
代码如下:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import com.szh.model.Device;
public class CopyFile {
public static void main(String[] args) {
// 使用adb把手机端文件拷贝到电脑以及把电脑文件拷贝到手机
// 首先获取设备信息
List<Device> devices = findDevices();
// 遍历设备的id
for (int i = 0; i < devices.size(); i++) {
// 获取id
String tempId = devices.get(i).getDeviceId();
// 使用adb往手机端推送文件
try {
// 电脑从手机上拉文件
Runtime.getRuntime() .exec("adb -s " + tempId + " pull sdcard/ucliulanqi.apk D:\\");
System.out.println("adb -s " + tempId + " pull sdcard/hello.txt D:\\");
// 从电脑上推送文件到手机
Runtime.getRuntime().exec( "adb -s " + tempId + " push D:\\demo\\hello.txt sdcard/");
System.out.println("adb -s " + tempId + " push D:\\demo\\hello.txt sdcard/");
// 把整个文件夹拉到PC端
Runtime.getRuntime().exec("adb pull sdcard/temp D:\\");
System.out.print("adb pull sdcard/temp D:\\");
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 发现手机里的设备
public static List<Device> findDevices() {
List<Device> devices = new ArrayList<Device>();
String str = null;
int port = 15000;
Process process = null;
Device device = null;
List<String> lines = new ArrayList<String>();
try {
process = Runtime.getRuntime().exec("E:/android/sdks/platform-tools/adb.exe devices");
InputStream in = process.getInputStream();
BufferedReader read = new BufferedReader(new InputStreamReader(in));
while ((str = read.readLine()) != null) {
lines.add(str);
System.out.println(str);
}
for (int i = 1; i < lines.size() - 1; i++) {
str = lines.get(i);
String[] deviceStr = str.split("\t");
if ("device".equals(deviceStr[1])) {
device = new Device();
device.setDeviceId(deviceStr[0]);
device.setState(deviceStr[1]);
// 目前先指定port;
device.setPort(port);
port++;
devices.add(device);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return devices;
}
}
======================================
model如下:
package com.szh.model;
public class Device {
String deviceId;
String state;
int port;
public String getDeviceId() {
return deviceId;
}
public void setDeviceId(String deviceId) {
this.deviceId = deviceId;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
}
有一点需要注意的是
1:通过adb获取手机设备id的时候,如果你的adb没有单独配置环境变量,通过"adb devices"这种操作是获取不到设备id的。我当时查资料的时候,看到网上有些使用adb devices获取的,但是因为我没有单独配置adb,所以这种方法并不好使。后来我通过绝对路径才获取成功。
版权声明:本文标题:使用adb命令,离线状态通过USB数据线在手机和PC间传输数据 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726387763h950534.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论