[java] view plain copy
  1. <spanstyle="text-align:left;"></span><prename="code"class="plain">android的底层实际是Linux内核,当然在shell环境下可以运行linux命令,尤其是经过root处理的android系统,基本上可以通过调用linux命令完全控制手机,下面的RootCmd.java代码就是实现运行linux外部命令。
[plain] view plain copy [java] view plain copy
  1. packagemy.android.code;
  2. importandroid.os.Environment;
  3. importdalvik.annotation.Signature;
  4. importjava.io.BufferedReader;
  5. importjava.io.DataInputStream;
  6. importjava.io.DataOutputStream;
  7. importjava.io.File;
  8. importjava.io.FileReader;
  9. importjava.io.InputStream;
  10. importjava.io.OutputStream;
  11. importjava.util.Vector;
  12. publicfinalclassRootCmd
  13. {
  14. //执行linux命令并且输出结果
  15. protectedstaticVectorexecRootCmd(StringparamString)
  16. {
  17. VectorlocalVector=newVector();
  18. try
  19. {
  20. ProcesslocalProcess=Runtime.getRuntime().exec("su");//经过Root处理的android系统即有su命令
  21. OutputStreamlocalOutputStream=localProcess.getOutputStream();
  22. DataOutputStreamlocalDataOutputStream=newDataOutputStream(localOutputStream);
  23. InputStreamlocalInputStream=localProcess.getInputStream();
  24. DataInputStreamlocalDataInputStream=newDataInputStream(localInputStream);
  25. Stringstr1=String.valueOf(paramString);
  26. Stringstr2=str1+"\n";
  27. localDataOutputStream.writeBytes(str2);
  28. localDataOutputStream.flush();
  29. Stringstr3=localDataInputStream.readLine();
  30. localVector.add(str3);
  31. localDataOutputStream.writeBytes("exit\n");
  32. localDataOutputStream.flush();
  33. localProcess.waitFor();
  34. returnlocalVector;
  35. }
  36. catch(ExceptionlocalException)
  37. {
  38. localException.printStackTrace();
  39. }
  40. }
  41. //执行linux命令但不关注结果输出
  42. protectedstaticintexecRootCmdSilent(StringparamString)
  43. {
  44. try
  45. {
  46. ProcesslocalProcess=Runtime.getRuntime().exec("su");
  47. ObjectlocalObject=localProcess.getOutputStream();
  48. DataOutputStreamlocalDataOutputStream=newDataOutputStream((OutputStream)localObject);
  49. Stringstr=String.valueOf(paramString);
  50. localObject=str+"\n";
  51. localDataOutputStream.writeBytes((String)localObject);
  52. localDataOutputStream.flush();
  53. localDataOutputStream.writeBytes("exit\n");
  54. localDataOutputStream.flush();
  55. localProcess.waitFor();
  56. localObject=localProcess.exitValue();
  57. returnlocalObject;
  58. }
  59. catch(ExceptionlocalException)
  60. {
  61. localException.printStackTrace();
  62. }
  63. }
  64. //判断机器Android是否已经root,即是否获取root权限
  65. protectedstaticbooleanhaveRoot()
  66. {
  67. inti=execRootCmdSilent("echotest");//通过执行测试命令来检测
  68. if(i!=-1)returntrue;
  69. retrunfalse;
  70. }
  71. }

源地址:http://monner.iteye.com/blog/754303

更多相关文章

  1. android 执行shell命令代码
  2. android 命令大全
  3. Android下的Console命令
  4. Java乔晓松-android的四大组件之一Service(服务的绑定)
  5. Mac adb 配置
  6. android 命令大全
  7. linux 下使用ndk-build编译android使用的c++静态库
  8. android 命令大全
  9. Android:adb shell am命令行发送Activity/Service/Broadcast

随机推荐

  1. Android(安卓)Edittext获取焦点后,弹出的
  2. Professional Android(安卓)2 Developmen
  3. 主题与样式详解
  4. Android相对布局属性全集
  5. Android(安卓)RelativeLayout(相对布局)
  6. Android(安卓)页面布局属性全
  7. Android(安卓)SDK 国内镜像
  8. Android菜鸟日记7
  9. ListView详解
  10. what is Android?