2012-06-29 4 views
9

Я пытаюсь получить вывод команды shell getprop с помощью java, поскольку getprop() всегда возвращает null, несмотря ни на что.Как читать выходные данные команды управления андроидом

Я попытался это из developer.android.com:

 Process process = null; 
    try { 
     process = new ProcessBuilder() 
      .command("/system/bin/getprop", "build.version") 
      .redirectErrorStream(true) 
      .start(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    InputStream in = process.getInputStream(); 

    //String prop = in.toString(); 
    System.out.println(in); 

    process.destroy(); 

Однако то, что печатается не выход, но куча символов и цифр (не имеют точный вывод прямо сейчас).

Как я могу получить результат процесса?

Спасибо!

+0

Вы пробовали '.getInputStream() .toString(); 'вместо просто' .getInputStream(); '... просто мысль – Zillinium

ответ

21

Есть ли какая-то особая причина, по которой вы хотите запустить команду в качестве внешнего процесса? Существует более простой способ:

String android_rel_version = android.os.Build.VERSION.RELEASE; 

Однако, если вы действительно хотите сделать это с помощью команды оболочки, вот так, как я получил его на работу:

try { 
     // Run the command 
     Process process = Runtime.getRuntime().exec("getprop"); 
     BufferedReader bufferedReader = new BufferedReader(
       new InputStreamReader(process.getInputStream())); 

     // Grab the results 
     StringBuilder log = new StringBuilder(); 
     String line; 
     while ((line = bufferedReader.readLine()) != null) { 
      log.append(line + "\n"); 
     } 

     // Update the view 
     TextView tv = (TextView)findViewById(R.id.my_text_view); 
     tv.setText(log.toString()); 
} catch (IOException e) { 
} 
Смежные вопросы