Рутированный Android не выполняет все команды программно

Этот код ниже успешно перезагружает устройство Android:

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

    OutputStream outputStream = p.getOutputStream();
    InputStream inputStream = p.getInputStream();
    DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

    dataOutputStream.writeBytes("reboot");
    dataOutputStream.flush();
    dataOutputStream.close();
    outputStream.close();
            p.waitFor();

Этот код должен остановить запущенное в данный момент приложение. Но это ничего не делает.

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

        OutputStream outputStream = p.getOutputStream();
        InputStream inputStream = p.getInputStream();
        DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));

        dataOutputStream.writeBytes("am force-stop com.XXX.XXX.XXX");
        dataOutputStream.flush();
        dataOutputStream.close();
        outputStream.close();
        p.waitFor();

Все команды работают через ADB Shell, а в устройстве есть скрипт "su". Есть ли процесс, который я могу устранить? Что я должен делать?

Когда запускается dataOutputStream.flush(), это дает мне эту ошибку:

04–29 01:56:05.057: W/System.err(6969): java.io.SyncFailedException: ошибка fsync: EINVAL (неверный аргумент)


person Jason Portnoy    schedule 28.04.2014    source источник
comment
какой у Вас вопрос? в чем проблема, с которой вы столкнулись?   -  person panini    schedule 29.04.2014
comment
Второй набор кода не работает, а первый работает? Любое понимание того, почему?   -  person Jason Portnoy    schedule 29.04.2014
comment
Не работает может означать что угодно, уточните.   -  person panini    schedule 29.04.2014
comment
Добавлена ​​системная ошибка, и не работает, значит ничего не делает. Но сработает та же команда из ADB.   -  person Jason Portnoy    schedule 29.04.2014


Ответы (1)


использовать try-catch объемную запись-флэш

try{
 dataOutputStream.writeBytes("am force-stop com.XXX.XXX.XXX");
 dataOutputStream.flush();
}catch(IOException e){
}

Не влияет на результат exec!

person zzzmode    schedule 25.12.2014