Android运行底层linux外部命令的实现
16lz
2021-12-04
[java] view plain copy
- <spanstyle="text-align:left;"></span><prename="code"class="plain">android的底层实际是Linux内核,当然在shell环境下可以运行linux命令,尤其是经过root处理的android系统,基本上可以通过调用linux命令完全控制手机,下面的RootCmd.java代码就是实现运行linux外部命令。
- packagemy.android.code;
- importandroid.os.Environment;
- importdalvik.annotation.Signature;
- importjava.io.BufferedReader;
- importjava.io.DataInputStream;
- importjava.io.DataOutputStream;
- importjava.io.File;
- importjava.io.FileReader;
- importjava.io.InputStream;
- importjava.io.OutputStream;
- importjava.util.Vector;
- publicfinalclassRootCmd
- {
- //执行linux命令并且输出结果
- protectedstaticVectorexecRootCmd(StringparamString)
- {
- VectorlocalVector=newVector();
- try
- {
- ProcesslocalProcess=Runtime.getRuntime().exec("su");//经过Root处理的android系统即有su命令
- OutputStreamlocalOutputStream=localProcess.getOutputStream();
- DataOutputStreamlocalDataOutputStream=newDataOutputStream(localOutputStream);
- InputStreamlocalInputStream=localProcess.getInputStream();
- DataInputStreamlocalDataInputStream=newDataInputStream(localInputStream);
- Stringstr1=String.valueOf(paramString);
- Stringstr2=str1+"\n";
- localDataOutputStream.writeBytes(str2);
- localDataOutputStream.flush();
- Stringstr3=localDataInputStream.readLine();
- localVector.add(str3);
- localDataOutputStream.writeBytes("exit\n");
- localDataOutputStream.flush();
- localProcess.waitFor();
- returnlocalVector;
- }
- catch(ExceptionlocalException)
- {
- localException.printStackTrace();
- }
- }
- //执行linux命令但不关注结果输出
- protectedstaticintexecRootCmdSilent(StringparamString)
- {
- try
- {
- ProcesslocalProcess=Runtime.getRuntime().exec("su");
- ObjectlocalObject=localProcess.getOutputStream();
- DataOutputStreamlocalDataOutputStream=newDataOutputStream((OutputStream)localObject);
- Stringstr=String.valueOf(paramString);
- localObject=str+"\n";
- localDataOutputStream.writeBytes((String)localObject);
- localDataOutputStream.flush();
- localDataOutputStream.writeBytes("exit\n");
- localDataOutputStream.flush();
- localProcess.waitFor();
- localObject=localProcess.exitValue();
- returnlocalObject;
- }
- catch(ExceptionlocalException)
- {
- localException.printStackTrace();
- }
- }
- //判断机器Android是否已经root,即是否获取root权限
- protectedstaticbooleanhaveRoot()
- {
- inti=execRootCmdSilent("echotest");//通过执行测试命令来检测
- if(i!=-1)returntrue;
- retrunfalse;
- }
- }
源地址:http://monner.iteye.com/blog/754303
更多相关文章
- android 执行shell命令代码
- android 命令大全
- Android下的Console命令
- Java乔晓松-android的四大组件之一Service(服务的绑定)
- Mac adb 配置
- android 命令大全
- linux 下使用ndk-build编译android使用的c++静态库
- android 命令大全
- Android:adb shell am命令行发送Activity/Service/Broadcast