#java #android
#java #Android
Вопрос:
я пытаюсь выполнить некоторую cmd-команду на Java, мой скрипт:
public void test(){
try{
Runtime rt=Runtime.getRuntime();
Process p = rt.exec("cmd /c " "adb devices");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while((line=input.readLine())!=null){
System.out.print(line);
}
}catch(Exception e){
System.out.println("process failed");
}
}
и результат вывода:
run:
List of devices attached
0160880B0401F006 device
как я могу перехватить часть этого результата: «0160880B0401F006» и поместить в список в моем графическом интерфейсе?
спасибо перед
Ответ №1:
Я бы использовал регулярное выражение (непроверенное):
Pattern p = Pattern.compile("(d )s*(.*)");
while((line=input.readLine())!=null){
Matcher m = p.matcher(line);
if (m.matches()) {
String id = matcher.group(1);
String name = matcher.group(2);
// do whatever you want with your values here
System.out.println("id: " id ", name: " name);
}
}
Вы также должны прочитать, когда Runtime.exec() не будет, на случай, если у вас возникнут какие-либо проблемы с выполнением внешней команды.
Ответ №2:
public void test(){
try{
Runtime rt=Runtime.getRuntime();
Process p = rt.exec("cmd /c " "adb devices");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=input.readLine();//discard first line
List<String> deviceList=new ArrayList<String>();
while((line=input.readLine())!=null){
deviceList.add(line.split(" ")[0]);
}
System.out.println("Device list " deviceList);
}catch(Exception e){
System.out.println("process failed");
}
}
Комментарии:
1. я пытаюсь использовать ваш метод. но в этой строке отображается ошибка: Список <Строка> Список устройств=новый список массивов<Строка>();
2. в чем ошибка? Если это связано с импортом, добавьте import java.util. ArrayList; импортировать java.util.List;