2014-09-10 3 views
-1

Я пытаюсь перезагрузить программно свою Galaxy S3.Попытка перезагрузить программно укоренившееся устройство Android

Вещи, которые я пробовал:

try { 
     Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "reboot" }); 
     proc.waitFor(); 
    } catch (Exception ex) { 
     Log.i("RebootActivity", "Could not reboot", ex); 
    } 

    try { 
     Runtime.getRuntime().exec(new String[]{"su","-c","reboot now"}); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    try 
    {   
     Process process = Runtime.getRuntime().exec("su"); 
     DataOutputStream os = new DataOutputStream(process.getOutputStream()); 
     os.writeBytes("reboot now\n"); 
    } 
    catch (Throwable t) 
    { 
     t.printStackTrace(); 
    } 

ли вы, ребята, есть какие-либо идеи, как это сделать?

Спасибо.

+0

Если я пытаюсь '/ system/bin/su', я получаю это исключение:' java.io.IOException: Ошибка при выполнении exec(). Команда: [/ system/bin/su, -c, reboot now] Рабочий каталог: null Окружающая среда: null' –

+0

Вы должны ввести '' adb shell chmod 777/dev/tty <> "' каждый раз при перезапуске эмулятора (конечно, замените/dev/tty <> "вашим последовательным устройством) –

+0

@SagarPilkhwal, я не использую эмулятор. Я использую Galaxy S3 4.4.2 –

ответ

0

Попробуйте сделать одну нормальную строку, похожую на «su \ n reboot; \ n "вместо массива. Попробуйте получить ответ от оболочки, что очень помогает при отладке.

Каковы разрешения вашего су бинарного? Если они ошибаются, вы можете попробовать «chmod 7777/system/xbin/su» после «mount -o remount, rw/system»

Вот пример кода: (для запуска строковой команды, которая а \ п и или, отделенный список команд Linux оболочки)

StringBuffer commandOutput = new StringBuffer(); 
    try { 
     Process process = Runtime.getRuntime().exec("su\n"); 
     DataOutputStream out = new DataOutputStream(process.getOutputStream()); 
     out.writeBytes("export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/vendor/lib:/system/lib\n"); 
     out.writeBytes(command+"\n"); 
     out.flush(); 

     process.waitFor(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(process.getInputStream())); 
     int numRead; 
     char[] buffer = new char[1000]; 
     while ((numRead = in.read(buffer)) > 0) { 
      commandOutput.append(buffer, 0, numRead); 
     } 
     in.close(); 
     process.waitFor(); 
    } catch ... 

    return commandOutput.toString(); 
+0

Как получить ответ от оболочки? ! –

+0

Этот код возвращает эту ошибку: 'W/System.err (26960): java.io.IOException: write failed: EPIPE (Broken pipe)' –

+0

Возможно, это поможет http://stackoverflow.com/questions/17615412/android -write-failed-epipe-broken-pipe-error-on-write-file – user3387542

Смежные вопросы