权限执行[Android开发常见问题-4] RunTime.exec()如何以root权限执行多条指令?
每日一贴,今天的内容关键字为权限执行
RunTime.exec()这个接口可以说是给我们开发者供给了一个很好的直观操纵底层操纵系统的机遇,但是这个接口的使用还有很多需要注意的问题。由于要完全的分析这个接口需要较大的篇幅,我在这里只针对一点停止分析“如何故root权限执行多条指令”
1.这里首先面临的是root权限,这个需要将手机停止root,具体方法可以通过360一键root来搞定。
2.先来看一下这段代码
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("su");
runtime.exec("cmd1");
runtime.exec("cmd2");
这里,执行su是向系统请求root权限,proc是返回执行su的这个独立进程。
下面来看一下cmd1和cmd2,我们假设这两个命令都需要root权限,那么按照上述方法写的话会发明cmd1和cmd2都会出现permission denied。
这是为什么呢?
因为su命令只会使得当前的进程获得root权限,也就是使得proc获得root权限,而不是让整个应用都具有root权限,又由于前面cmd1和cmd2停止runtime.exec的时候又各自存在于一个独立的进程中,所以不具备root权限。
那么应当怎么来解决呢?往下看
3.让全部指令处在一个进程中
盈盈月光,我掬一杯最清的;落落余辉,我拥一缕最暖的;灼灼红叶,我拾一片最热的;萋萋芳草,我摘一束最灿的;漫漫人生,我要采撷世间最重的———毅力。
Runtime runtime = Runtime.getRuntime();
Process proc = runtime.exec("su;cmd1;cmd2");
我满怀欢喜地执行上述代码,首先我是知道“cmd_a;cmd_b;cmd_c”这样的写法是准确的,而且经过诸如runtime("cd /mnt;ls -l") 这样的测试证明是可以执行的。
但是上述代码执行后就卡住了,貌似是进程挂起了,个人认为是su指令的问题,但是确实原因还不清楚,在这里希望哪位大牛知道原因可以告诉一下~先谢过!
4.继续探寻
既然proc这个进程已具有了root权限,那么我们就要想办法怎么在这个线程的前提下停止一些操纵,经过查询,终于求的真经,如下:
Process proc = runtime.exec("su");DataOutputStream os = new DataOutputStream(proc.getOutputStream());os.writeBytes("cmd1\n");os.writeBytes("cmd2\n");os.writeBytes("exit\n");os.flush();
这里必定要注意cmd1和cmd2前面的“\n”是不可缺少的,由于DataOutputStream这个接口并不能直接操纵底层shell,所以需要"\n"来标记一条命令的结束。
ok,搞定。
纵情享受随心所欲的操纵操纵系统的快感吧~
文章结束给大家分享下程序员的一些笑话语录: 一位程序员去海边游泳,由于水性不佳,游不回岸了,于是他挥着手臂,大声求.救:“F1,F1!”
--------------------------------- 原创文章 By
权限和执行
---------------------------------
转载于:https://www.cnblogs.com/xinyuyuanm/p/3150340.html
权限执行[Android开发常见问题-4] RunTime.exec()如何以root权限执行多条指令?相关推荐
- android中如何通过代码检测是否有root权限?
2019独角兽企业重金招聘Python工程师标准>>> Android android中如何通过代码检测是否有root权限? while 3 票 1892 评论 (0) • 分享 • ...
- Android应用.三星i9000系列(4).SuperOneClick获取Root权限的原理
Android应用.三星i9000系列(4).SuperOneClick获取Root权限的原理 草木瓜 20110408 一.前言 经过笔者自己测试与分析,得出结论:所以Android手机获取Root ...
- 手机模拟器自带root_手机没root权限,用这款软件轻松让手机有root权限
众所周知很多软件都要root,可是又没有root用不了,今天为大家带来的这款软件解决你的烦恼. 首先先了解一下这个软件: [软件名称]:虚拟大师 [软件大小]:7.08MB [软件语言]:中文 [软件 ...
- android androidruntime java,java – Runtime.exec():在Android中重启?
重新启动在Android中正常工作.你可能没有正确地执行runtime.exec(). 你需要处理 public static void rebootSU() { Runtime runtime = ...
- Android开发常见问题及解答
搭建Android开发环境时容易出现什么问题?有哪些地方需要注意? 1.环境搭建过程中,往往会出现安装配置或者环境变量配置遗漏或者放置地方不匹配,导致后续找不到位置,因此需要考虑好安装各个软件的步骤及 ...
- android xml通知栏权限配置,Android开发中 AndroidManifest.xml配置之service,receiver标签配置详解...
本文主要来分享service,receiver标签配置.如有错误,欢迎指正. android:directBootAware=["true" | "false" ...
- Android WIFI密码查看器实例(在获取Root权限下查看系统文件)
Android WIFI密码查看器实例 实现原理:使用shell命令查看保存WIFI密码的系统文件 涉及的知识 界面展示 基本的Shell命令 shell查看WIFI密码 ShellUtil的使用 正 ...
- android 常用adb 和 adb shell 命令 获取root权限
android 常用adb 和 adb shell 命令 ADB常用命令: 1. 查看设备 adb devices 这个命令是查看当前连接的设备, 连接到计算机的android设备或者模拟器将会 ...
- root+android+8.0,安卓8.0,手机ROOT权限获取依旧必备还是多此一举
原标题:安卓8.0,手机ROOT权限获取依旧必备还是多此一举 即谷歌放出Android8.0,许多小道消息便不胫而走.传言说谷歌将在后续安卓版本中抓紧对ROOT权限的控制权.这意味着手机厂商深层改动原 ...
最新文章
- 学习python一开始枯燥_编程零基础应当怎样开始学python?他说,看这三个经典方法...
- MPB:扬大林淼组-瘤胃内容物样本中有机酸的定量分析 (高效液相色谱)
- 【Extjs】large按钮,图片全部覆盖按钮
- 通过浏览器下载服务端图片到客户端
- boost::hana::keys用法的测试程序
- SAP Spartacus的navigation初始化
- 开源手机自动化测试框架iQuery入门教程(一)
- 里bl2和bl3为什么分开_英国的水池为什么有两个水龙头?为什么英国有独立的冷热水龙头?...
- 【转】坐标系变换矩阵推导
- 【POJ - 3259 】Wormholes(Bellman_Ford或spfa算法,判断有向图中是否存在负环)
- 输入控件控制输入限制
- Python获取随机字母
- CentOS 非图形界面用户如何上网
- 在MinGW中构建GCC交叉编译器和GDB交叉调试器
- Netty实战《原理》
- pdf去除密码 html,pdf加密文件如何去除密码?求解密pdf文件的技巧
- 从祖师级到新生代,48位开发者的「武功秘籍」
- SAP-WEB-GUI无法上传excel问题
- 克里斯坦森的破坏性创新—《可以量…
- vim之快速查找功能