Android(安卓)运行底层linux外部命令的实现
16lz
2021-12-04
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; } }
更多相关文章
- Android框架揭秘读书笔记
- Android(安卓)4.2.2原生Launcher修改使之可以运行过程小结
- android studio gradle自动签名构建实现
- Android(安卓)Service生命周期及用法!
- Android常用的几个命令
- Android(安卓)下的 bolts tasks
- android 定时器(Handler Timer Thread AlarmManager CountDownTi
- Android(安卓)自动编译、打包生成apk文件 、命令行方式
- 为Android加入busybox工具