Android在Shell環境下運行Linux命令

 

Android在Shell環境下運行Linux命令

[日期:2010-09-06] 來源:Linux社區  做者:monner

Android的底層實際是Linux內核,固然在shell環境下能夠運行Linux命令,尤爲是通過root處理的android系統,基本上能夠經過調用Linux命令徹底控制手機,下面的RootCmd.java代碼就是實現運行Linux外部命令。java

package my.Android.code;linux

import Android.os.Environment;
import dalvik.annotation.Signature;android

 

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();
    }
  }shell

  //執行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();
    }
  }ide

//判斷機器Android是否已經root,便是否獲取root權限
  protected static boolean haveRoot()
  {測試

    int i = execRootCmdSilent("echo test"); //經過執行測試命令來檢測
    if (i != -1)  return true;
    retrun false;
  }spa

}code

相關文章
相關標籤/搜索