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系统中的广播(Broadcast)机制注册注销发送原理总结
  2. Android系统的Binder机制分析
  3. 巨人的崛起 Android操作系统发展历程
  4. 我来说说Android touch 系统的设计哲学
  5. 安卓系统框架介绍
  6. Android 自动编译、打包生成apk文件 1 - 命令行方式
  7. Android 编译系统分析之返璞归真(一)
  8. 让Python在Android系统上飞一会儿:第一节 在手机上配置Python运
  9. Android怎样修改系统时间?

随机推荐

  1. Rust Meetup 登陆深圳,满满的都是干货!
  2. 《商君书》白话解读 10章 战法
  3. 五款Python图像处理工具!Python入门分享!
  4. 一杯茶的功夫,上手Redis持久化机制
  5. 2021年哪些办公软件比较好用?
  6. 《商君书》白话翻译与解读——15章 徕民
  7. 《商君书》白话解读——14章 修权
  8. Python和C语言有什么区别?分析!
  9. Harbor的基本使用
  10. Docker企业级镜像仓库Harbor