2012-06-29 16 views
9

Próbuję uzyskać wyjście polecenia powłoki android 'getprop' z java, ponieważ getprop() zawsze zwraca wartość null bez względu na wszystko.Jak odczytać wyjście polecenia Android procesu

Próbowałem to z 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(); 

Jednak to, co jest drukowane nie jest wyjście, ale banda znaków i cyfr (nie masz wyjścia dokładnie teraz).

Jak mogę uzyskać dane wyjściowe procesu?

Dzięki!

+0

Czy próbowałeś '.getInputStream() .toString(); 'zamiast po prostu' .getInputStream(); '... tylko myśl – Zillinium

Odpowiedz

21

Czy istnieje jakiś szczególny powód, dla którego chcesz uruchomić polecenie jako proces zewnętrzny? Jest prostszy sposób:

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

Jednakże, jeśli naprawdę chcesz to zrobić za pomocą polecenia powłoki, oto sposób mam go do pracy:

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) { 
} 
Powiązane problemy