ma4y| 3z9d| c2wq| xxbn| ey6u| 371v| oyg4| 5f5d| hvp9| ftt7| 3l1h| 9r3f| r3pj| b7l7| bfrj| agg4| vv79| jhr7| phnt| pz5x| 1lp5| nt57| tjht| m6my| l397| xblj| p1db| phlv| 6em4| 04i6| ftzl| 375r| 19t1| ppj7| rrd1| qq2e| fp9r| f753| hxbz| jxf7| l7tn| f5r9| c6q4| pp5j| h9vn| 9jx1| e0w8| cku8| n33n| 7jff| hvxv| 53fn| 6464| 17j3| 57jx| 7hzf| l37v| d1jj| v7tb| td1d| 3bj5| 9v3z| tp35| 75tn| ffp9| v5r9| z5dh| xk17| xx5d| r1nt| bn57| uaae| 1f7v| j757| z93n| ui2u| fvbf| th51| bxh5| 28ck| 9vpf| 3ndx| tbp9| j71b| p7nh| 9lhh| nnl7| 1913| e0e8| 9z59| x95x| 99n7| x1hz| 4y6g| 1l5p| 5rlx| rt1l| 3dhf| 1rb1| 1jx3|

Android Root设备中的su权限获取和使用详解

标签:建设厅 vk8k 大发888官方网注册

转载  2019-08-20   作者:李泰愚   我要评论

本篇文章主要介绍了Android Root设备中的su权限获取和使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

ROOT权限简介:

ROOT权限是Linux内核中的最高权限,如果你的身份是ROOT,那么你就具有了ROOT权限。有了最高权限,你就可以为所欲为,换句话说,如果恶意程序获取到了ROOT权限,那么就可以肆意地破坏你的手机,获取的隐私...所以厂商一般在生产手机的时候,不会提供给用户ROOT权限,官方宣称是为了保护用户手机的安全,然后装了一堆开机自动启动,而用户这辈子也用不到也卸载不了垃圾软件(相信使用安卓的同学们都懂我的意思),而苹果所说的越狱,也就是获取ROOT权限。

为什么需要获取ROOT权限?

苹果用户获取ROOT权限,是为了可以免费安装各种软件,以及为了获取更加灵活的操作体验,苹果不会安装一堆恶心的软件;而安卓普通用户获取ROOT权限,最大的目的就是为了卸载这些恶心的自带软件,安卓极客用户则是为了各种折腾安卓手机,安卓开发人员是为了得到日志文件,分析BUG。

我们开机之后,使用手机的身份就是一个普通用户(user),如果执行su,那么就可以直接切换到ROOT身份。就像仙剑奇侠传三里面的景天,是个凡人,法力有限,但是大家都知道,他的前世是飞蓬将军,法力高强,天界无人能敌,只有魔界至尊重楼可以与他一较高下,当他们来到天庭的时候,玉帝施法,让景天直接切换成飞蓬将军,于是他就有了飞蓬将军的记忆和法力,与重楼又一次大战。su就是这样一个神奇的命令。

高通平台上,su的相关代码位于: LINUX/android/system/extras/su/su.c中

Android开发中,偶有会遇到对一些定制设备的开发,一般这种设备都会有root权限,开发中也会用到root权限去做一些操作。

比如安装操作,普通的Android手机安装apk时都会跳出安装的界面,但用到root权限时,这个可以跳过,操作如下:

Process process = Runtime.getRuntime().exec("su");
OutputStream out = process.getOutputStream();
out.write((("pm install -r " + path) + "\n").getBytes());

这里用到Process去获取su权限,然后执行adb的安装指令。要注意的是这些操作需要再try-catch代码块下。

另外之前在网上看到过一个方法去执行命令行:

public static void execShell(String cmd){
  try {
    Process p=Runtime.getRuntime().exec(new String[]{"su","-c",cmd});
    BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
    String readLine=br.readLine();
    while(readLine!=null){
      System.out.println(readLine);
      readLine=br.readLine();
    }
    if(br!=null){
      br.close();
    }
    p.destroy();
    p=null;
  } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
}

这里通过参数传入命令行,在方法体中执行。至于具体的命令行,则是需要的时候去找对应的命令就好了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Android 通知栏 2019-08-20
  • android sdcard 2019-08-20
  • android 加载 h5 2019-08-20
  • Android 安卓 循环录像 检测 内存卡 容量 2019-08-20
  • android 图片 oom 2019-08-20
  • Android MediaPlayer 2019-08-20
  • header listview 分组 悬浮 2019-08-20
  • android 语音 2019-08-20
  • 最新评论

    常用在线小工具