android 在手机sd 卡中执行linux 命令 和shell 脚本

小灰灰 2022-08-06 17:20 272阅读 0赞

当时需求是在手机开启lte 时启动手机里的一个进程,抓去log 。

public void exec() {

ProcessBuilder pb = new ProcessBuilder(“/system/bin/sh”);
// java.lang.ProcessBuilder: Creates operating system processes.
pb.directory(new File(“/“));// 设置shell的当前目录。

String command1 = “./sdcard/zte/log.sh”;
try {
Process proc = pb.start();
// 获取输入流,可以通过它获取SHELL的输出。
BufferedReader in = new BufferedReader(new InputStreamReader(
proc.getInputStream()));
BufferedReader err = new BufferedReader(new InputStreamReader(
proc.getErrorStream()));
// 获取输出流,可以通过它向SHELL发送命令。
PrintWriter out = new PrintWriter(new BufferedWriter(
new OutputStreamWriter(proc.getOutputStream())), true);
out.println(“pwd”);
out.println(“su root”);// 执行这一句时会弹出对话框(以下程序要求授予最高权限…),要求用户确认。
out.println(“cd /sdcard/zte/“);// 这个目录在系统中要求有root权限才可以访问的。
out.println(“ls -l”);// 这个命令如果能列出当前安装的APK的数据文件存放目录,就说明我们有了ROOT权限。
out.println(“./log.sh”);
// proc.waitFor();
String line;
while ((line = in.readLine()) != null) {
System.out.println(line); // 打印输出结果
}
while ((line = err.readLine()) != null) {
System.out.println(line); // 打印错误输出结果
}
in.close();
out.close();
proc.destroy();
} catch (Exception e) {
System.out.println(“exception:” + e);
}

}

Runnable GpsBdsrunnable = new Runnable(){
@Override
public void run() {
exec();
}
};

发表评论

表情:
评论列表 (有 0 条评论,272人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Linux编写shell脚本执行多个命令

    背景:Linux做项目写完代码之后,需要用一个文件夹下多个文件进行测试,而且需要对于同一个文件执行多个命令,这个时候如果一个一个命令输入比较繁琐,于是写了一个简单的命令脚本如下