如果要在java程序里执行一条linux可以用下面的写法,android中也类似

Java代码
  1. Processprocess=Runtime.getRuntime().exec(cmd);
  2. process.waitFor(); //让该process 阻塞

但是当遇到像cd这样的命令时,上面的这种写法切不管用,很多时候我们以为是命令输错了或是文件找不到。

现在提供一种新的执行命令方法:

Process proc = null;try {proc = Runtime.getRuntime().exec("/system/bin/sh", null, new File("/system/bin")); // android中使用// proc = Runtime.getRuntime().exec("/bin/bash", null, new File("/bin")); //Linux中使用// 至于windows,由于没有bash,和sh 所以这种方式可能行不通Log.d("","");} catch (IOException e) {e.printStackTrace();}if (proc != null) {BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())), true);out.println("cd /data/data/com.vatata.atest.commandexecute");out.println("pwd");out.println("pwd");out.println("pwd");out.println("cd /");out.println("ls -l");// out.println("exit");try {String line;while ((line = in.readLine()) != null) {System.out.println(line);Log.d("command", line);}// proc.waitFor(); //上面读这个流食阻塞的,所以waitfor 没太大必要性in.close();out.close();proc.destroy();} catch (Exception e) {e.printStackTrace();}}

附上源码吧,可以看看,希望对需要的人有点帮助 <!--EndFragment-->

更多相关文章

  1. 友盟推送android 8.0系统不显示推送消息问题
  2. Android预安装软件&adb命令&编译源码
  3. android Ant编译项目多渠道打包
  4. Android(安卓)多模拟器使用adb shell
  5. Android(安卓)bluetooth介绍(四): a2dp connect流程分析
  6. Android(安卓)命令行编译、打包生成apk文件
  7. Ionic 运行报错No resource identifier found for attribute 'ap
  8. 使用sencha cmd创建android应用
  9. Android执行shell命令

随机推荐

  1. Android(安卓)组件Activity,Application
  2. Android设置渐变色状态栏
  3. 2013年Android 学习计划
  4. Android实现静态广播监听器的方法
  5. 系出名门
  6. Android 下拉菜单 Spinner 赋值
  7. Android 比较全面的自定义刷新空间
  8. Android(安卓)自定义View练手Demo(三)实现
  9. android intent FLAG_ACTIVITY_CLEAR_TOP
  10. opencv源码编译(基于android NDK)