2012-06-29 7 views
9

getprop()は何があっても常にnullを返すので、アンドロイドシェルコマンド 'getprop'の出力を取得しようとしています。android processコマンドの出力を読むには

私は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を試してみました単に.getInputStream(); '...の代わりに' '.toString() – 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) { 
} 
関連する問題