android java调用_关于Android中Java调用外部命令的三种方式
此所谓三种方式,只是个人认为。本人还是菜鸟初涉,所以有所错误,请指正。
个人认为,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调用外部命令的三种方式相关推荐
- python循环展示大写字母_python调用大写函数python中字典的循环遍历的两种方式
开发中经常会用到对于字典.列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式. 注意: python2和python ...
- Android Studio导入外部资源的三种方式
在Android Studio打开导入外资源的路径:File->Project Structure- 第一步:选择Dependencies 第二步:选择要添加依赖的modules 第三步:为mo ...
- vue 函数 路由跳转_vue中通过路由跳转的三种方式
router-view 实现路由内容的地方,引入组件时写到需要引入的地方 需要注意的是,使用vue-router控制路由则必须router-view作为容器. 通过路由跳转的三种方式 1.router ...
- Python找出列表中出现次数最多的元素三种方式
通过三种方式给大家介绍,具体详情如下所示: 方式一: 原理:创建一个新的空字典,用循环的方式来获取列表中的每一个元素,判断获取的元素是否存在字典中的key,如果不存在的话,将元素作为key,值为列表中 ...
- vue中实现路由跳转的三种方式(超详细整理)
vue中实现路由跳转的三种方式 一.使用vue-router vue-router 本质是一个第三方的包 用的时候需要下载 步骤 (7步法 ): 下载vue-router模块到当前工程 yarn ad ...
- java class 生成对象_Java反射机制(创建Class对象的三种方式)
1:SUN提供的反射机制的类: java.lang.Class java.lang.reflect.Constructor java.lang.reflect.Field java.lang.refl ...
- java反射获取实体类_java 反射获取类对象的三种方式
Java反射经常用到的就是获取对象中的属性,那么Java获取类对象就是必不可少的啦! Java实体类: public class ReflexModel { private String code; ...
- java bean 工厂模式_Spring框架通过工厂创建Bean的三种方式实现
工厂模式 Spring中bean的创建,默认是框架利用反射new出来的bean实例.有时候也会有一些复杂的情况. 假设有一个飞机,属性如下,现在需要造很多同型号的飞机,那么唯一需要改变的属性只有Dri ...
- Action 中获取表单数据的三种方式
(尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53138905 冷血之心的博客) Action 中获取表单提交数据 ...
最新文章
- 裴健等9名华人当选加拿大皇家学会院士
- R语言使用caret包的preProcess函数进行数据预处理:对所有的数据列进行SpatialSign变换(将数据投影到单位圆之内)、设置method参数为spatialSign
- 给一个由n个单词组成的字符串排序
- Oracle(3)——Oracle图形界面工具创建数据库
- java初学者适用项目_有哪些适合java初学者的项目?
- PowerDesigner逆向工程,从数据库导出PDM(包括采坑记录)
- Oracle 无备份情况下的恢复--控制文件/数据文件
- 一些不错 Java 实践推荐!建议熟读并背诵默写全文
- Java Integer 对象的比较
- ghostscript处理PDF/拆分/压缩/合并/转换
- QQ概念版(WPF制作)
- 云原生分布式数据库和数据仓库崛起背后的原因
- Oracle 12c CDB和PDB的切换
- 电影文件的合并与分割
- C#两套WPF,看板和WPF工业组件
- ElasticSearch已有字段添加Fields
- PCIe系列专题之一:PCIe技术概述
- 隔离,隔离,再隔离!
- 信誉管理软件的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 回头再说--英雄 汪峰