Kiedy próbuję prowadzić następujące

process = Runtime.getRuntime().exec("input touchscreen swipe 100 1000 300 1000 1000"); //Normal swipe Działa.

Jednak, gdy używam go tak jak poniższe, nie działa.
String[] inputs = {"adb", "shell", "input touchscreen swipe 500 1000 600 1000 1000"}; Process p = Runtime.getRuntime().exec(inputs); p.waitFor();

Mam inne polecenie, które chcę biegać, a za to uruchomić, muszę użyć drugiego podejścia. Czy ktoś może mi powiedzieć, jaki jest powód lub jak mogę zrobić drugi bieg?

-2
grad9 5 czerwiec 2018, 08:47

3 odpowiedzi

Najlepsza odpowiedź

Jak wspomniano o @Geno Chen, parametry, muszą iść z podwójnymi cytatami. String[] inputs = {"input", "touchscreen", "swipe", "100", "1000", "300", "1000", "1000"}; p.waitFor(); musi zostać usunięty, aby uzyskać tę pracę.

0
grad9 5 czerwiec 2018, 07:21
Process p = Runtime.getRuntime().exec(inputs);

Rzuca kilka wyjątków, w tym, ale nie ograniczone do IO, Wskaźnik NULL, indeks z wiązania.

Spróbuj otoczyć tę linię próbując złapać

Process p;
    try {
        p = Runtime.getRuntime().exec(ch);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
0
404 Brain Not Found 5 czerwiec 2018, 05:56

Powinieneś wkleić, jaki jest błąd, jeśli istnieje. (Na przykład w LogCat.)

adb jest klientem, który może nie istnieć w urządzeniu z systemem Android (od Android 5.0+). Nie oczekuje się go używać w komendzie aplikacji Android. Dla próbki można bezpośrednio użyć polecenia input bez adb.

Również,

process = Runtime.getRuntime().exec("input touchscreen swipe 100 1000 300 1000 1000");

Jest równa

String[] inputs = {"input", "touchscreen", "swipe", "100", "1000", "300", "1000", "1000"}; process = Runtime.getRuntime().exec(inputs);.

Zwróć uwagę na upadł dwa pierwsze elementy w inputs z pytania.

0
Geno Chen 5 czerwiec 2018, 06:45