Android应用程序的adb shell命令

时间:2018-06-05 05:47:03

标签: java android shell adb

当我尝试运行以下

process = Runtime.getRuntime().exec("input touchscreen swipe 100 1000 300 1000 1000"); //Normal swipe 它有效。

但是,当我按照以下方式使用它时,它无法正常工作 String[] inputs = {"adb", "shell", "input touchscreen swipe 500 1000 600 1000 1000"}; Process p = Runtime.getRuntime().exec(inputs); p.waitFor();

我想要运行另一个命令,并且要运行它,我必须使用第二种方法。有人可以告诉我是什么原因或如何让第二个运行?

3 个答案:

答案 0 :(得分:0)

Process p = Runtime.getRuntime().exec(inputs);

引发了一些例外,包括但不限于IO,Null Pointer,Index Out of Bound。

尝试使用try catch

包围该行
Process p;
    try {
        p = Runtime.getRuntime().exec(ch);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

答案 1 :(得分:0)

您应该粘贴错误是什么(如果存在)。 (例如,在logcat中。)

adb是您的Android设备中可能不存在的客户端(自Android 5.0以来)。您不应在Android App命令中使用它。对于您的示例,您可以直接使用input命令而不使用adb

另外,

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

相当于

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

请注意问题中inputs中前两个元素的删除。

答案 2 :(得分:0)

正如@Geno Chen所提到的,参数需要配双引号。 setTimeout(() => { for (let i = 0; i < 10; i++) { this.iData.push( this.iData.length ); } console.log('Async operation has ended'); infiniteScroll.complete(); }, 500); 必须删除String[] inputs = {"input", "touchscreen", "swipe", "100", "1000", "300", "1000", "1000"};才能使其正常运行。