此所谓三种方式,只是个人认为。本人还是菜鸟初涉,所以有所错误,请指正。

个人认为,Java调用外部命令。无非三种情况:

一.是只执行命令,不考虑返回值。

二.是执行命令的同时,还需要得到返回值。

三.是执行命令的同时,等待得到返回值。

二和三的不同在于,前者之间可以得到返回。后者通过某些情况后才可以得到返回。

(一)

Runtime.getRuntime().exec("su");

(二)

process = Runtime.getRuntime().exec("su");

os = new DataOutputStream(process.getOutputStream());

os.writeBytes(cmd1 + "\n");

os.writeBytes("exit\n");

os.flush();

process.getErrorStream().close();

InputStream in = process.getInputStream();

byte[] re = new byte[1024];

while (in.read(re) != -1) {

result = result + new String(re);

}

Log.i(TAG, "result = " + result);

in.close();

process.waitFor();

(三).其实跟二差不多。只是需要另开一个线程执行,并一直循环获取。

my = new Thread() {

public void run() {

Process process = null;

DataOutputStream os = null;

String result = "";

try {

process = Runtime.getRuntime().exec("su");

os = new DataOutputStream(process.getOutputStream());

os.writeBytes("getevent /dev/input/event3" + "\n");

os.flush();

os.close();

process.getErrorStream().close();

InputStream in = process.getInputStream();

byte[] re = new byte[19];

Log.i(TAG, "Thread start---");

while(true) {

if (in.read(re) != -1) {

Log.i(TAG, "load string...");

result = result + new String(re);

Log.i(TAG, "run result = " + result);

} else {

Thread.sleep(100);

Log.i(TAG, "sleep result = " + result);

}

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (os != null) {

os.close();

}

process.destroy();

} catch (Exception e) {

}

}

}

};

android java调用_关于Android中Java调用外部命令的三种方式相关推荐

  1. python循环展示大写字母_python调用大写函数python中字典的循环遍历的两种方式

    开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...

  2. Android Studio导入外部资源的三种方式

    在Android Studio打开导入外资源的路径:File->Project Structure- 第一步:选择Dependencies 第二步:选择要添加依赖的modules 第三步:为mo ...

  3. vue 函数 路由跳转_vue中通过路由跳转的三种方式

    router-view 实现路由内容的地方,引入组件时写到需要引入的地方 需要注意的是,使用vue-router控制路由则必须router-view作为容器. 通过路由跳转的三种方式 1.router ...

  4. Python找出列表中出现次数最多的元素三种方式

    通过三种方式给大家介绍,具体详情如下所示: 方式一: 原理:创建一个新的空字典,用循环的方式来获取列表中的每一个元素,判断获取的元素是否存在字典中的key,如果不存在的话,将元素作为key,值为列表中 ...

  5. vue中实现路由跳转的三种方式(超详细整理)

    vue中实现路由跳转的三种方式 一.使用vue-router vue-router 本质是一个第三方的包 用的时候需要下载 步骤 (7步法 ): 下载vue-router模块到当前工程 yarn ad ...

  6. java class 生成对象_Java反射机制(创建Class对象的三种方式)

    1:SUN提供的反射机制的类: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.refl ...

  7. java反射获取实体类_java 反射获取类对象的三种方式

    Java反射经常用到的就是获取对象中的属性,那么Java获取类对象就是必不可少的啦! Java实体类: public class ReflexModel { private String code; ...

  8. java bean 工厂模式_Spring框架通过工厂创建Bean的三种方式实现

    工厂模式 Spring中bean的创建,默认是框架利用反射new出来的bean实例.有时候也会有一些复杂的情况. 假设有一个飞机,属性如下,现在需要造很多同型号的飞机,那么唯一需要改变的属性只有Dri ...

  9. Action 中获取表单数据的三种方式

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905  冷血之心的博客) Action 中获取表单提交数据 ...

最新文章

  1. 裴健等9名华人当选加拿大皇家学会院士
  2. R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行SpatialSign变换(将数据投影到单位圆之内)、设置method参数为spatialSign
  3. 给一个由n个单词组成的字符串排序
  4. Oracle(3)——Oracle图形界面工具创建数据库
  5. java初学者适用项目_有哪些适合java初学者的项目?
  6. PowerDesigner逆向工程,从数据库导出PDM(包括采坑记录)
  7. Oracle 无备份情况下的恢复--控制文件/数据文件
  8. 一些不错 Java 实践推荐!建议熟读并背诵默写全文
  9. Java Integer 对象的比较
  10. ghostscript处理PDF/拆分/压缩/合并/转换
  11. QQ概念版(WPF制作)
  12. 云原生分布式数据库和数据仓库崛起背后的原因
  13. Oracle 12c CDB和PDB的切换
  14. 电影文件的合并与分割
  15. C#两套WPF,看板和WPF工业组件
  16. ElasticSearch已有字段添加Fields
  17. PCIe系列专题之一:PCIe技术概述
  18. 隔离,隔离,再隔离!
  19. 信誉管理软件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  20. 回头再说--英雄 汪峰

热门文章

  1. bubbleSort 冒泡排序
  2. RocketMQ源码解析-Consumer启动(2)
  3. RabbitMQ 整合 Spring AMQP 实战
  4. 07 行锁功过:怎么减少行锁对性能的影响? (笔记)
  5. golang生成随机定长的验证吗
  6. 对百度超级链Xuper使用过程中的进一步理解
  7. SpringBoot整合Redis入门
  8. 虚拟机以前能上网,突然上不了网
  9. python设计模式21-策略模式
  10. undefined reference to `__isnanf'