从Android执行Shell命令

发布于 2021-02-02 22:52:43

我正在尝试在我编写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中不行?

关注者
0
被浏览
471
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    你应该获取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);
    }
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看