如何在代码中跑Linux指令
来源:互联网 发布:淘宝怎么搜索同城店铺 编辑:程序博客网 时间:2024/06/14 14:17
在手机端的开发过程中,有时候我们可能要在代码中运行Linux指令,从而去更改系统的某些配置,今天我们就来学习一下如何在代码中去运行Linux指令,废话不多说,我们直接看实现的工具类,以及调用的方法。
调用的工具类 CommandExecution.javapublic class CommandExecution { public static final String TAG = "CommandExecution"; public final static String COMMAND_SU = "su"; public final static String COMMAND_SH = "sh"; public final static String COMMAND_EXIT = "exit\n"; public final static String COMMAND_LINE_END = "\n"; /** * Command执行结果 * * @author Mountain */ public static class CommandResult { public int result = -1; public String errorMsg; public String successMsg; } /** * 执行命令—单条 * * @param command * @param isRoot * @return */ public static CommandResult execCommand(String command, boolean isRoot) { String[] commands = {command}; return execCommand(commands, isRoot); } /** * 执行命令-多条 * * @param commands * @param isRoot * @return */ public static CommandResult execCommand(String[] commands, boolean isRoot) { CommandResult commandResult = new CommandResult(); if (commands == null || commands.length == 0) return commandResult; Process process = null; DataOutputStream os = null; BufferedReader successResult = null; BufferedReader errorResult = null; StringBuilder successMsg = null; StringBuilder errorMsg = null; try { process = Runtime.getRuntime().exec(isRoot ? COMMAND_SU : COMMAND_SH); os = new DataOutputStream(process.getOutputStream()); for (String command : commands) { if (command != null) { os.write(command.getBytes()); os.writeBytes(COMMAND_LINE_END); os.flush(); } } os.writeBytes(COMMAND_EXIT); os.flush(); commandResult.result = process.waitFor(); //获取错误信息 successMsg = new StringBuilder(); errorMsg = new StringBuilder(); successResult = new BufferedReader(new InputStreamReader(process.getInputStream())); errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream())); String s; while ((s = successResult.readLine()) != null) successMsg.append(s); while ((s = errorResult.readLine()) != null) errorMsg.append(s); commandResult.successMsg = successMsg.toString(); commandResult.errorMsg = errorMsg.toString(); Log.i(TAG, commandResult.result + " | " + commandResult.successMsg + " | " + commandResult.errorMsg); } catch (IOException e) { String errmsg = e.getMessage(); if (errmsg != null) { Log.e(TAG, errmsg); } else { e.printStackTrace(); } } catch (Exception e) { String errmsg = e.getMessage(); if (errmsg != null) { Log.e(TAG, errmsg); } else { e.printStackTrace(); } } finally { try { if (os != null) os.close(); if (successResult != null) successResult.close(); if (errorResult != null) errorResult.close(); } catch (IOException e) { String errmsg = e.getMessage(); if (errmsg != null) { Log.e(TAG, errmsg); } else { e.printStackTrace(); } } if (process != null) process.destroy(); } return commandResult; }}
工具类的简单调用以及运行指令的方法: String[] commands = {"mount -o remount /dev/block/by-name/system /system", "cd system", "sed -i 's/^qemu.*/qemu.hw.mainkeys=1/' build.prop", "cd ..", "reboot"};CommandExecution.CommandResult commandResult = CommandExecution.execCommand(commands, true); System.out.println("commandResult.errorMsg:" + commandResult.errorMsg + "/" + "commandResult.result:" + commandResult.result + "/" + "commandResult.successMsg:" + commandResult.successMsg );
0 0
- 如何在代码中跑Linux指令
- 如何将kadmelia协议在peersim中跑起来
- android在armv4t中跑。
- android在armv4t中跑
- qemu中跑linux
- 在Eclipse中跑b3log的设置
- 让birt在ie10中跑起来
- 第二节 在Xocde中跑起OpenCV
- 在java中如何调用linux的ctrl+c指令?
- 系统在本地tomcat中跑没问题。在weblogic中跑,总报:JSLoader.js 缺少'}'的错误
- 在linux下,如何调试代码?
- 学习Linux的小技巧----如何在Linux的CLI下快捷复制上一条指令
- db2在linux相关指令
- 让FCKeditor在 JSP和JSF 网站项目中跑起来
- 让咱们的OpenCms在MyEcplise中跑起来
- 一直想在RAM中跑uboot,省事,没想到
- 简单的TestNG.xml在Eclipse中跑TestNG suite
- 在Linux平台如何编译单元测试的代码(转)
- 一个超级傻的错误--import urllib.request 报错
- html select控件的取值及事件
- 通过maven-shade-plugin 解决Elasticsearch与hbase的jar包冲突问题
- ARM跳转指令B的反汇编分析
- php常用函数
- 如何在代码中跑Linux指令
- JQuery url长度太长,导致报错
- Linux设备模型(7)_Class
- H5移动应用的发布优化(四)图片优化
- hive中日期与时间戳转换
- JFreeChart学习(三)——动态打印java内存使用情况
- 放大分析双缓冲类时间计算问题
- jvisualvm远程监控 visualgc插件 不受此jvm支持
- spring mvc 如何传递集合参数(list,数组)