1
我必须执行使用调用Runtime.getRuntime亚行命令()前高管:如何使用Runtime.getRuntime().exec(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;
我送这个字符串:
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
}
该代码运行良好,但我没有看到该命令得到执行。有人能指出这个问题吗?
始终包含你正在使用的主要语言的标签。另外,将指针悬停在标签上方以查看定义。 'cmd'是一个Windows命令shell,并且与此问题无关。 –
adb是一个接口。只有在使用通过adb接口提供的半提升权限的情况下才起作用,而不是在设备上运行的第三方应用程序的高度受限权限时,您想要在此处运行的命令是“adb命令”。要从应用程序运行它,您需要使用特权升级攻击,例如修改后的“su”垫片。 –