ndroid (linux)很多命令需要root权限才能执行,比如说查看系统目录文件等,如果我们的程序需要用到查看此类文件或执行系统命令,就必须先获取Root权限。


view plain print ?
  1. importjava.io.DataInputStream;
  2. importjava.io.DataOutputStream;
  3. importjava.io.InputStream;
  4. importjava.io.OutputStream;
  5. importandroid.app.Activity;
  6. importandroid.os.Bundle;
  7. publicclassRootActivityextendsActivity{
  8. /**Calledwhentheactivityisfirstcreated.*/
  9. @Override
  10. publicvoidonCreate(BundlesavedInstanceState){
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.main);
  13. DataInputStreamstream;
  14. if(isRooted()){
  15. try{
  16. stream=Terminal("ping-c2www.pocketdigi.com");
  17. //其实ping并不需要root权限,这里是ping2次后才停止,所以启动后需要一点时间才会有显示
  18. //你可以自己换成需要root权限的命令试试
  19. Stringtemp;
  20. while((temp=stream.readLine())!=null){
  21. System.out.println(temp);
  22. //循环输出返回值
  23. }
  24. }catch(Exceptione1){
  25. //TODOAuto-generatedcatchblock
  26. e1.printStackTrace();
  27. }
  28. }
  29. }
  30. publicDataInputStreamTerminal(Stringcommand)throwsException
  31. {
  32. Processprocess=Runtime.getRuntime().exec("su");
  33. //执行到这,Superuser会跳出来,选择是否允许获取最高权限
  34. OutputStreamoutstream=process.getOutputStream();
  35. DataOutputStreamDOPS=newDataOutputStream(outstream);
  36. InputStreaminstream=process.getInputStream();
  37. DataInputStreamDIPS=newDataInputStream(instream);
  38. Stringtemp=command+"\n";
  39. //加回车
  40. DOPS.writeBytes(temp);
  41. //执行
  42. DOPS.flush();
  43. //刷新,确保都发送到outputstream
  44. DOPS.writeBytes("exit\n");
  45. //退出
  46. DOPS.flush();
  47. process.waitFor();
  48. returnDIPS;
  49. }
  50. publicbooleanisRooted(){
  51. //检测是否ROOT过
  52. DataInputStreamstream;
  53. booleanflag=false;
  54. try{
  55. stream=Terminal("ls/data/");
  56. //目录哪都行,不一定要需要ROOT权限的
  57. if(stream.readLine()!=null)flag=true;
  58. //根据是否有返回来判断是否有root权限
  59. }catch(Exceptione1){
  60. //TODOAuto-generatedcatchblock
  61. e1.printStackTrace();
  62. }
  63. returnflag;
  64. }
  65. }


转自:http://blog.csdn.net/offbye/article/details/7076252


更多相关文章

  1. pull解析和json编码
  2. Linux Mint下Kindle Fire调试android程序
  3. android 终端上使用gcc
  4. android CTS test
  5. 【Android】删除已知路径的文件或文件夹
  6. android studio 配置ffmpeg
  7. Android权限控制EasyPermissions
  8. RK3399 /RK3288 ADB使用
  9. Android设置界面之Preference

随机推荐

  1. Android 6.0 源代码编译实践
  2. Android中下拉列表框操作
  3. Android让一个apk作为Launcher启动
  4. Android 网络操作(上传下载等)
  5. android程序安全注意点
  6. Android 探究 LayoutInflater setFactory
  7. Android 线程池管理工具类
  8. Android回调事件传播-android学习之旅(四
  9. TextView设置行间距 和 字间距
  10. android之创建快捷方式