Android Runtime exec接口使用的一些注意事项
Android开发过程有时候会用到Runtime.getRuntime().exec(command)
执行cmd命令,但是有时候会遇到一些问题,比如:
- 读取inputstream或者errorstream一直阻塞
- No such file or directory
本文将为你解答以上疑惑,并介绍Runtime.getRuntime().exec(command)
接口的正确使用方式。
先说结论:
-
在你的命令前加上
/bin/sh -c
或者{"/bin/sh", "-c", ***}
-
如果你的命令中包含双(单)引号,且被双(单)引号包围的命令中包含空格,请使用入参类型为
String
数组的重载方法,并将引号引起来的命令作为一个整体写入数组中。例如{"/bin/sh", "-c", "aaa", "\"ccc ddd eee\""}
这两点可以结合使用。
综上,推荐大家使用入参为数组的重载方法,并在你的命令前加上/bin/sh -c
,以避免不必要的坑点。
原理分析大家如果感兴趣的话我会再写一篇详细分析。