Ausführen adb-Befehle aus java

Ich wollen, schieben Sie eine Datei aus meinem Java-Programm auf einem Android-emulator. Jetzt kann ich starten Sie den emulator, indem Sie mit ProcessBuilder und auch Falle, die die logcat-Meldungen. Aber immer, wenn ich versuche, die adb push-Befehl in der Prozess-generator, der Prozess hängt und keine Ausgabe erzeugt.

Code:

try {
    ProcessBuilder proc = new ProcessBuilder("D://android-sdk//platform-tools//adb.exe",
                                             "push D:\\final.xml /mnt/sdcard/final.xml");
    Process p = proc.start();
    BufferedReader br2 = new BufferedReader(new InputStreamReader(p.getInputStream()));
    while ( (line = br2.readLine()) != null)
        System.out.println(line);
} catch (Exception e) {
    System.err.println("Error");
}

EDIT:-
Fand die probabble Lösung. Ich war mit Prozess.waitFor () - Methode, aber nicht die Speicherung seiner exit-Code zurückgegeben. Nun als ich dies Tat:

int exitVal = p.waitFor();

Alles funktionierte wie ein Charme.

Und @Marc Van Daele
Vielen Dank für deinen input. nach meiner Erfahrung, ProcessBuilder funktioniert in beide Richtungen, dh. Sie verwenden Argumente, getrennt durch Leerzeichen oder durch Kommata getrennt werden. 🙂

  • Um ehrlich zu sein, ich denke, es ist unwahrscheinlich, dass die Speicherung der Rückgabewert von waitFor löst das Problem. Ich denke eher, dass, manchmal, Sie sind schnell genug, um Lesen Sie die Daten aus dem InputStream (und dann funktioniert es OK) und manchmal sind Sie nicht, und dann laufen Sie in den 'hang' Problem.
  • Ja.. nachdem ich den edit .. es fühlte sich irgendwie komisch zu mir. Aber ich bin nicht mit dem gleichen Thema seit geraumer Zeit jetzt. Vielen Dank für Ihre Hilfe guyz 🙂
InformationsquelleAutor user1471910 | 2012-06-21
Schreibe einen Kommentar