Android执行linux外部命令

来源:互联网 发布:新疆大学教育网络系统 编辑:程序博客网 时间:2024/05/17 15:59
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;  } }


原创粉丝点击