Runtime.getRuntime().exec(cmd)执行adb shell脚本可能出现的问题

例如:adb shell sendevent /dev/input/event3 1 $((0xca)) 1
上面语句中含有$((0xca)) ,执行Runtime.getRuntime().exec("sendevent /dev/input/event3 1 $((0xca)) 1"),不会报错,但也不会生效,解决办法为:

(1)先将$((0xca))中的0xca的十六进制转换为十进制202,$((202)),再执行Runtime.getRuntime().exec("sendevent /dev/input/event3 1 $((202)) 1"),但还是不会报错,但不能生效。

(2)最后将$((202))的$(())去掉,就剩下202,执行Runtime.getRuntime().exec("sendevent /dev/input/event3 1 202 1"),执行后生效,问题解决。

时间: 2024-08-28 12:23:42

Runtime.getRuntime().exec(cmd)执行adb shell脚本可能出现的问题的相关文章

调用Runtime.getRuntime().exec()执行Linux脚本防挂死和返回脚本输出

1.在实际开发中,使用Runtime.getRuntime().exec()执行Linux脚本时,需要同时读取标准输出流与错误输出流缓冲区数据,因为操作系统缓冲区大小有限制,不及时处理会导致缓冲区占满而挂住,这种问题发生在于开发人员对该接口不了解而引发Bug. 具体可以通过使用两个线程同时去读错误和标准输出流缓冲区数据,然后用proc.waitFor()可以获取执行的结果.这种事最常见的场景,只关注脚本执行结果. 2.但在实际开发中,通过Runtime.getRuntime().exec()执行

通过Runtime.getRuntime().exec调用底层Linux下的程序或脚本

Android Runtime使得直接调用底层Linux下的可执行程序或脚本成为可能 比如Linux下写个测试工具,直接编译后apk中通过Runtime来调用 或者写个脚本,apk中直接调用,省去中间层或者JNI 这个至少效率应该比较高吧 代码: [java] view plaincopy public class test extends Activity { TextView text; /** Called when the activity is first created. */ @O

Android: 通过Runtime.getRuntime().exec调用底层Linux下的程序或脚本

Android Runtime使得直接调用底层Linux下的可执行程序或脚本成为可能 比如Linux下写个测试工具,直接编译后apk中通过Runtime来调用 或者写个脚本,apk中直接调用,省去中间层或者JNI 这个至少效率应该比较高吧 代码: [java] view plaincopy 1 public class test extends Activity { 2 TextView text; 3 4 /** Called when the activity is first create

使用Runtime.getRuntime().exec()在java中调用python脚本

举例有一个Python脚本叫test.py,现在想要在Java里调用这个脚本.假定这个test.py里面使用了拓展的包,使得pythoninterpreter之类内嵌的编译器无法使用,那么只能采用java调用控制台进程,即 Runtime.getRuntime().exec(),来运行这个python脚本. 在windows下运行这个程序,假如是参考了一些百度来的被转载了无数遍的文章,很有可能运行结果是根本没有执行这个脚本.经过测试,在java中执行如下代码可以成功运行test.py文件: --

Runtime.getRuntime().exec中命令含有括号问题

在写批量执行bat工具的时候,想起了之前写的定时小工具里面的执行方法. 使用Runtime.getRuntime().exec方法. Runtime.getRuntime().exec("cmd /c start c:/test.bat") 这样就可以像dos窗口直接执行命令行一样. getRuntime返回Runtime的实例化对象,exec方法是返回Process对象. 查看Process类可以发现: The ProcessBuilder.start() and Runtime.e

用Runtime.getRuntime().exec()需要注意的地方

d有时候我们可能需要调用系统外部的某个程序,此时就可以用Runtime.getRuntime().exec()来调用,他会生成一个新的进程去运行调用的程序. 此方法返回一个java.lang.Process对象,该对象可以得到之前开启的进程的运行结果,还可以操作进程的输入输出流. Process对象有以下几个方法: 1.destroy() 杀死这个子进程 2.exitValue() 得到进程运行结束后的返回状态 3.waitFor() 得到进程运行结束后的返回状态,如果进程未运行完毕则等待知道执

Runtime.getRuntime().exec()需要注意的地方

文章出处http://www.cnblogs.com/fclbky/p/6112180.html 有时候我们可能需要调用系统外部的某个程序,此时就可以用Runtime.getRuntime().exec()来调用,他会生成一个新的进程去运行调用的程序. 此方法返回一个java.lang.Process对象,该对象可以得到之前开启的进程的运行结果,还可以操作进程的输入输出流. Process对象有以下几个方法: 1.destroy() 杀死这个子进程 2.exitValue() 得到进程运行结束后

Android ProcessBuilder与Runtime.getRuntime().exec分别创建进程的区别

在Android中想要进行Ping,在不Root机器的情况下似乎还只能进行底层命调用才能实现. 因为在Java中要进行ICMP包发送需要Root权限. 于是只能通过创建进程来解决了,创建进程在Java中有两种方式,分别为: 1. 调用ProcessBuilder的构造函数后执行start() 2. 用Runtime.getRuntime().exec()方法执行 经过使用后发现两者有区别但是也并不是很大,两个例子说明: 1.调用ProcessBuilder的构造函数后执行start(): Pro

Android Runtime.getRuntime().exec

try { // Executes the command. Process process = Runtime.getRuntime().exec(cmd); // NOTE: You can write to stdin of the command using // process.getOutputStream(). BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStrea