有没有办法以编程方式获取连接到 adb 的 android 设备列表?
我想在桌面应用程序上用 Java 来做。我有 adb.exe 的路径,但解析“adb devices”响应似乎不是最好的主意。
有没有更可靠的方法?
这就是我的做法
try {
Process process = Runtime.getRuntime().exec("adb devices");
BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
Pattern pattern = Pattern.compile("^([a-zA-Z0-9\\-]+)(\\s+)(device)");
Matcher matcher;
while ((line = in.readLine()) != null) {
if (line.matches(pattern.pattern())) {
matcher = pattern.matcher(line);
if (matcher.find())
System.out.println(matcher.group(1));
}
}
} catch (IOException e) {
e.printStackTrace();
}
最佳解决方案取决于您要对列表执行的操作。如果您要在您找到的设备上运行一些 adb 命令 - 解析adb devices
输出是显而易见的选择。另一种选择是通过 USB 堆栈并收集具有 ADB 接口枚举的设备的序列号。或者我最喜欢的一个——在 Linux 下,我只是创建一个自定义 udev
规则来跟踪所有连接的 ADB 设备。我正在使用数据库,但它可以像为每个 ADB 设备创建一个符号链接然后检查文件列表一样简单。