有没有办法以编程方式获取连接到adb的Android设备列表?
我想在桌面应用程序上使用Java。我有adb.exe的路径,但解析“adb devices”响应似乎不是最好的主意。
有更可靠的方法吗?
答案 0 :(得分:3)
最佳解决方案取决于您要对列表执行的操作。如果要在所找到的设备上运行一些adb命令 - 解析adb devices
输出是显而易见的选择。另一种选择是通过USB堆栈并收集枚举了ADB接口的设备的序列号。或者我最喜欢的 - 在Linux下我只创建一个自定义udev
规则来跟踪所有连接的ADB设备。我正在使用数据库,但它可以像为每个ADB设备创建符号链接然后检查文件列表一样简单。
答案 1 :(得分:3)
这就是我做的方式
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();
}