Выполнить программную оболочку программно: почему она не работает? - программирование

Выполнить программную оболочку программно: почему она не работает?

Я пытаюсь программно выполнить новую команду kitKat ScreenRecorder. Я просто попробовал это:

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

Но не работает. В папке у меня есть файл Example.mp4, но он пуст (0 байт). Зачем? Как я могу это решить? В чем проблема? Если из эмулятора терминала я пишу su и нажимаю enter, а после записи screenrecord /sdcard/Folder/Example.mp4 работает отлично. Obvisioully Я работаю на 4.4.2 и в корневом терминале.

4b9b3361

Ответ 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);
        }
    }