android应用如何在有需要时申请root权限?在程序中要调用哪些语句来实现?

测试的手机已经root,并且装有授权管理,允许应用来申请root权限。但是要怎么在程序里写代码来触发申请?我试过用:
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("su");
是会弹出一个对话框问你是否允许申请root,但只是执行这条命令有root权限而已,并不是整个程序都有root权限。

通过执行su得到的这个process是具有root权限的,你可以把你想做的事情在这个process中去做,说白了就是往这个process的输入输出流里面写点可执行的东西。
但是你得了解什么样的操作是需要root权限的,拿到root权限的仅有这样一个process,而这个process只能做一些简单的事情,复杂的事情需要自己来协调。
比如
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("su");
//这个proc就是具有root权限的,你可以通过以下这种方式执行一些root权限才能做得事。
PrintWriter pw = new PrintWriter(proc.getOutputStream());
pw.println("cd /system");
pw.flush();
pw.close();
如果需要“重定向输入输出”或者是“管道”操作都是需要自己在代码中协调的,毕竟这个process并不是解释器,而是执行器,需要解释的东西它还是不懂的。如果只是想要部分功能给用户弹个提示框什么的,在执行su这个process的时候就会弹出了,


必须说明的一点是,这种方法只认对非system用户权限的程序,如果你的程序的用户是system,是不能执行su这个操作的。
system用户的程序说明你有Android原代码,那么想得到root 权限可以用property启动service的方法。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值