Android 运行底层linux外部命令的实现
2012-04-06 21:15
429 查看
Android运行底层linux外部命令的实现
android的底层实际是Linux内核,当然在shell环境下可以运行linux命令,尤其是经过root处理的android系统,基本上可以通过调用linux命令完全控制手机,下面的RootCmd.java代码就是实现运行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在CMD中输入adb命令,提示“'adb' 不是内部或外部命令,也不是可运行的程序”的解决方法
- Android安装报错,提示“reg”不是内部或外部命令,也不是可运行的程序或批处理文件
- ANDROID 'xcopy' 不是内部或外部命令,也不是可运行的程序 【by徐玉丽】
- 【原创】Android adb错误“'adb' 不是内部或外部命令,也不是可运行的程序或批处理文件。”处理方法
- Android错误_adb不是内部或外部命令,也不是可运行的程序
- 无需 root 实现在 Android 设备上运行 Linux | Linux 中国
- Android在Shell环境下运行Linux命令
- android Android签名证书的sha1值报错 :不是内部或外部命令,也不是可运行的程序
- Linux之nohup命令:实现退出终端后程序继续后台运行
- [Android]使用Linux命令实现隐藏显示应用功能
- 'xcopy' 不是内部或外部命令,也不是可运行的程序 不知道为什么 每次输入android命令都会出现!
- Android Studio Terminal 不是内部或外部命令,也不是可运行程序或批处理文件
- Android-adb不是内部或外部命令,也不是可运行的程序或批处理文件
- 'D:\android\ANDROI~1\tools\lib\\find_java.exe' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- Android使用linux命令实现关机和重启---需要root权限
- 【转】Linux下nohup命令实现退出终端后程序继续后台运行