以编程方式执行shell命令:为什么它不起作用?

时间:2013-12-31 10:03:35

标签: java android xml root

我正在尝试以编程方式执行新命令“ScreenRecorder”kitkat。我刚试过这个:

suProcess = Runtime.getRuntime().exec("su");
process = Runtime.getRuntime().exec("screenrecord /sdcard/Folder/Example.mp4");

但是不起作用。在文件夹中我有文件Example.mp4,但它是空的(0字节)。为什么?我怎么解决这个问题?问题出在哪儿?如果从终端模拟器我写su并按回车键并在写screenrecord /sdcard/Folder/Example.mp4之后它完美地工作。很明显,我正在使用4.4.2和一个有根终端的终​​端。

2 个答案:

答案 0 :(得分:1)

试试这个

public static void ScreenRecord() throws Exception
    {
        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);
        }
    }

答案 1 :(得分:0)

它不起作用,因为它是模拟器而不是普通设备。我认为这篇文章在这种情况下可以提供帮助:http://russelldavis.blogspot.com/2011/01/rooting-android-emulator.html