2012-06-29 36 views
9

Tôi đang cố gắng để có được kết quả của lệnh shell android 'getprop' với java vì getprop() luôn trả về null cho dù thế nào đi chăng nữa.Làm thế nào để đọc đầu ra của lệnh xử lý android

Tôi cố gắng này từ 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(); 

Tuy nhiên những gì được in không phải là đầu ra nhưng một loạt các ký tự và số (không có đầu ra chính xác ngay bây giờ).

Làm cách nào tôi có thể nhận được kết quả của quá trình?

Cảm ơn!

+0

Các bạn đã thử '.getInputStream() .toString(); 'thay vì chỉ' .getInputStream(); '... chỉ là một ý nghĩ – Zillinium

Trả lời

21

Có lý do cụ thể nào khiến bạn muốn chạy lệnh dưới dạng quá trình bên ngoài không? Có một cách đơn giản hơn:

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

Tuy nhiên, nếu bạn thực sự muốn làm điều đó thông qua một lệnh shell, đây là cách tôi đã nhận nó để làm việc:

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) { 
} 
Các vấn đề liên quan