Android在Shell环境下运行Linux命令

Android的底层其实linux,所以可以在android 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 + "
";

      localDataOutputStream.writeBytes(str2);

      localDataOutputStream.flush();

      String str3 = localDataInputStream.readLine();

      localVector.add(str3);

      localDataOutputStream.writeBytes("exit
");

      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 + "
";

      localDataOutputStream.writeBytes((String)localObject);

      localDataOutputStream.flush();

      localDataOutputStream.writeBytes("exit
");

      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:请一针见血的评论。
  • 2:评论需要审核通过后才能显示。
  • 3:评论字数限制在1000字以内。
  • 当前字数:0
热门文章
推荐文章
随机文章
关于本站 - 广告服务 - 版权声明 - 联系我们 - 友情链接 - 网站地图 - 帮助中心