Android 运行底层linux外部命令的实现
来源:互联网 发布:软件企业培训费 编辑:程序博客网 时间:2024/05/16 10:05
分类: Android2012-04-06 21:15 600人阅读 评论(0) 收藏 举报
androidlinuxstringvectorexceptionlinux内核
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 运行底层linux外部命令的实现
- Android运行底层linux外部命令的实现
- android运行底层linux外部命令的实现
- Android 运行底层linux外部命令的实现
- Android运行底层linux外部命令的实现
- Android执行linux外部命令
- Android执行linux外部命令
- linux route的底层实现
- android 底层的linux 常用命令
- 内部跳转和外部跳转的区别,底层实现原理
- Android和Linux底层通信机制实现
- Android底层控制系统设置的命令集合
- Android底层控制系统设置的命令集合
- Android:adb不是内部或外部命令,也不是可运行的程序或批量文件
- Android开发:keytool' 不是内部或外部命令 也不是可运行的程序
- android不是内部或外部命令,也不是可运行的程序或批处理文件
- Android错误_adb不是内部或外部命令,也不是可运行的程序
- android Studio keytool' 不是内部或外部命令,也不是可运行的程序 或批处理文件
- jquery开始——我们来看看地图
- 黑马程序员——JAVA基础之数组
- iOS学习计划——轻松开心慢慢来
- spring+cxf调用webservice接口
- 大二的开始ging
- Android 运行底层linux外部命令的实现
- 剑指offer--算法(7、14、16、21、25、28、59、37、43、51、46、58)
- “ORA-01589:must use RESETLOGS or NORESETLOGS option for database open”
- 【转载】跳表SkipList的原理和实现
- Binary Tree Maximum Path Sum
- 假如生活欺骗了你
- 二叉树遍历的迭代算法
- 篮球和学习
- JS DATE 计算两个日期之差