Guten Abend,
ich arbeite zur Zeit an einem Programm, welches laufend Ordner auf einem Android Gerät durchlaufen und diese mittels einem Stream ausgeben soll. Es wird also zu Beginn eine ArrayList mit Befehlen erstellt, die dann an einen ProcessBuilder übergeben werden. Diese Befehle lassen sich auch ohne Probleme ausführen und ich kann die Konsole auf dem Android Gerät starten und mir die dortigen Root Verzeichnisse anzeigen lassen.
Nun bräuchte ich den ProcessBuilder allerdings erneut um in die ausgelesenen Verzeichnisse zu gelangen und dort die selbe Prozedur durchzuführen.
Problem: Ich weiß nicht wie ich weitere Befehle in den ProcessBuilder, bzw in den daraus erhaltenen Prozess bekommen soll. Bei der Menge an Verzeichnissen habe ich nicht die Möglichkeit jedes mal einen neuen ProcessBuilder mit einer neuen ArrayList von Befehlen zu erstellen. Ich dachte daran, mir den InputStream des Prozesses zu holen und über diesen Befehle abzugeben, dies scheint aber nicht zu Funktionieren.
Hier der wichtige Codeausschnitt:
Wenn mir jemand helfen kann, wär der Hammer
ich arbeite zur Zeit an einem Programm, welches laufend Ordner auf einem Android Gerät durchlaufen und diese mittels einem Stream ausgeben soll. Es wird also zu Beginn eine ArrayList mit Befehlen erstellt, die dann an einen ProcessBuilder übergeben werden. Diese Befehle lassen sich auch ohne Probleme ausführen und ich kann die Konsole auf dem Android Gerät starten und mir die dortigen Root Verzeichnisse anzeigen lassen.
Nun bräuchte ich den ProcessBuilder allerdings erneut um in die ausgelesenen Verzeichnisse zu gelangen und dort die selbe Prozedur durchzuführen.
Problem: Ich weiß nicht wie ich weitere Befehle in den ProcessBuilder, bzw in den daraus erhaltenen Prozess bekommen soll. Bei der Menge an Verzeichnissen habe ich nicht die Möglichkeit jedes mal einen neuen ProcessBuilder mit einer neuen ArrayList von Befehlen zu erstellen. Ich dachte daran, mir den InputStream des Prozesses zu holen und über diesen Befehle abzugeben, dies scheint aber nicht zu Funktionieren.
Hier der wichtige Codeausschnitt:
Java:
ArrayList<String> commands = new ArrayList<String>();
ProcessBuilder pb;
Process p;
commands.add("D:/ADB/adb.exe"); //starts Android Debug Bridge
commands.add("shell"); //starts shell on Android Device
commands.add("ls"); //displays dirs
pb = new ProcessBuilder (commands);
p = pb.start();
p.waitFor();
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
System.out.println("output: ");
while ((line = br.readLine()) != null) {
System.out.println(line);
}
Wenn mir jemand helfen kann, wär der Hammer