从Android执行Shell命令

我正在尝试在我编写su并按下的应用程序中从应用程序仿真器终端(您可以在Google Play中找到它)执行此命令enter,因此请编写:

screenrecord --time-limit 10 /sdcard/MyVideo.mp4

然后再次按,enter并使用android kitkat的新功能开始录制屏幕。

因此,我尝试使用以下命令从Java执行相同的代码:

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

Process execute = Runtime.getRuntime().exec("screenrecord --time-limit 10 /sdcard/MyVideo.mp4");

但是不起作用,因为未创建文件。显然,我在装有android kitkat的有根设备上运行。问题出在哪里?我该如何解决?因为从终端仿真器工作并且在Java中不行?

回答:

你应该获取su刚刚启动的进程的标准输入并在此处写下命令,否则你将使用current运行命令UID

尝试这样的事情:

try{

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

DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

outputStream.writeBytes("screenrecord --time-limit 10 /sdcard/MyVideo.mp4\n");

outputStream.flush();

outputStream.writeBytes("exit\n");

outputStream.flush();

su.waitFor();

}catch(IOException e){

throw new Exception(e);

}catch(InterruptedException e){

throw new Exception(e);

}

以上是 从Android执行Shell命令 的全部内容, 来源链接: utcz.com/qa/435046.html

回到顶部