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框架揭秘读书笔记
  2. Android(安卓)4.2.2原生Launcher修改使之可以运行过程小结
  3. android studio gradle自动签名构建实现
  4. Android(安卓)Service生命周期及用法!
  5. Android常用的几个命令
  6. Android(安卓)下的 bolts tasks
  7. android 定时器(Handler Timer Thread AlarmManager CountDownTi
  8. Android(安卓)自动编译、打包生成apk文件 、命令行方式
  9. 为Android加入busybox工具

随机推荐

  1. [置顶] android应用框架系列三,兼容性
  2. Android获取WIFI状态下的IP地址以及MAC地
  3. android 环境变量搭建
  4. android 内存使用
  5. android studio下ndk开发
  6. android sdk api的层次结构
  7. Android Things之---Android Things专题
  8. 一行命令得到签名SHA1(Android Studio)
  9. SharedPreferences
  10. android web services