如何使用runtime.getRuntime().exec(cmd)作为由;分开的长命令



我必须使用runtime.getRuntime()。执行:

执行ADB命令

sendevent /dev/input/event2 3 57 0;sendevent /dev/input/event2 3 53 325;sendevent /dev/input/event2 3 54 891;sendevent /dev/input/event2 3 58 71;sendevent /dev/input/event2 3 48 71;sendevent /dev/input/event2 0 0 0;sendevent /dev/input/event2 3 57 4294967295;sendevent /dev/input/event2 0 0 0;

我正在发送此字符串:

String cmd = "sendevent /dev/input/event2 3 57 0;" +
                    "sendevent /dev/input/event2 3 53 325;" +
                    "sendevent /dev/input/event2 3 54 891;" +
                    "sendevent /dev/input/event2 3 58 71;" +
                    "sendevent /dev/input/event2 3 48 71;" +
                    "sendevent /dev/input/event2 0 0 0;" +
                    "sendevent /dev/input/event2 3 57 4294967295;" +
                    "sendevent /dev/input/event2 0 0 0;";
call(cmd);

在此通话功能中:

private void call( String cmd) {
  Process ans_call;
  InputStreamReader cmd_reader;
  BufferedReader cmd_bufferedReader;
  String line = null;
  try {
    sendMainUIMessage(MSG_KPI_UI_UPDATE_REQUEST, null, cmd);
    mLogWriter.writeDiagnoseLog(cmd);
    ans_call = Runtime.getRuntime().exec(cmd);
    NotifyRunning(ans_call);
    cmd_reader = new InputStreamReader(ans_call.getInputStream());
    cmd_bufferedReader = new BufferedReader(cmd_reader);
    while (((line = cmd_bufferedReader.readLine()) != null)) {
        sendMainUIMessage(MSG_KPI_UI_UPDATE_REQUEST, null, line + "n");
        mLogWriter.writeDiagnoseLog(line);              
    }  //end of while
    ans_call.waitFor();
    NotifyEnd(ans_call);
    cmd_reader.close();
    cmd_bufferedReader.close();
  } catch (IOException e) {
    Log.e(TAG, "Could not write file " + e.getMessage());
  } catch (InterruptedException e) {
    Log.e(TAG, "Ping test Fail: InterruptedException");
  } //end of try
}

代码运行正常,但我看不到命令被执行。有人可以指出问题吗?

您的应用程序没有写入/dev/input/event2

的权限

最新更新