Android运行底层linux外部命令的实现 android的底层实际是Linux内核,当然在shell环境下可以运行linux命令,尤其是经过root处理的android系统,基本上可以通过调用linux命令完全控制手机,下面的RootCmd.java代码就是实现运行linux外部命令。
package my.android.code; import android.os.Environment;import dalvik.annotation.Signature;import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileReader;import java.io.InputStream;import java.io.OutputStream;import java.util.Vector; public final class RootCmd{  //执行linux命令并且输出结果  protected static Vector execRootCmd(String paramString)  {    Vector localVector = new Vector();    try    {      Process localProcess = Runtime.getRuntime().exec("su ");//经过Root处理的android系统即有su命令      OutputStream localOutputStream = localProcess.getOutputStream();      DataOutputStream localDataOutputStream = new DataOutputStream(localOutputStream);      InputStream localInputStream = localProcess.getInputStream();      DataInputStream localDataInputStream = new DataInputStream(localInputStream);      String str1 = String.valueOf(paramString);      String str2 = str1 + "\n";      localDataOutputStream.writeBytes(str2);      localDataOutputStream.flush();      String str3 = localDataInputStream.readLine();      localVector.add(str3);      localDataOutputStream.writeBytes("exit\n");      localDataOutputStream.flush();      localProcess.waitFor();      return localVector;    }    catch (Exception localException)    {      localException.printStackTrace();    }  }    //执行linux命令但不关注结果输出  protected static int execRootCmdSilent(String paramString)  {    try    {      Process localProcess = Runtime.getRuntime().exec("su");      Object localObject = localProcess.getOutputStream();      DataOutputStream localDataOutputStream = new DataOutputStream((OutputStream)localObject);      String str = String.valueOf(paramString);      localObject = str + "\n";      localDataOutputStream.writeBytes((String)localObject);      localDataOutputStream.flush();      localDataOutputStream.writeBytes("exit\n");      localDataOutputStream.flush();      localProcess.waitFor();      localObject = localProcess.exitValue();      return localObject;    }    catch (Exception localException)    {      localException.printStackTrace();    }  }  //判断机器Android是否已经root,即是否获取root权限  protected static boolean haveRoot()  {    int i = execRootCmdSilent("echo test"); //通过执行测试命令来检测    if (i != -1)  return true;    retrun false;  } }


更多相关文章

  1. Android模拟器简介—更新到最新的3.0 Honeycomb
  2. Android(安卓)SDCard Filesystem
  3. android am命令
  4. android(安卓) SDK 环境变量配置
  5. 探究Android之ClassLoader
  6. Android的电话功能介绍
  7. Android(安卓)shell 系统命令大全
  8. Android模拟器不能连网之解决
  9. Android(安卓)Shell 常用命令

随机推荐

  1. image button on android
  2. android 判断是否第一次进入欢迎页
  3. MySQL数据库开发的36条原则(小结)
  4. MySql 知识点之事务、索引、锁原理与用法
  5. MySQL 查询速度慢与性能差的原因与解决方
  6. mysql查询慢的原因和解决方案
  7. 老鸟带你开发专业规范的MySQL启动脚本
  8. Win7 安装 Mysql 5.6的教程图解
  9. mysql备份脚本并保留7天
  10. mysql 设置自动创建时间及修改时间的方法