2012-06-29 20 views
9

Estoy tratando de obtener la salida del comando android shell 'getprop' con java ya que getprop() siempre devuelve null sin importar nada.Cómo leer la salida del comando android process

He intentado esto desde 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(); 

Sin embargo lo que se imprime no es la salida, pero un montón de caracteres y números (no tiene la salida exacta en este momento).

¿Cómo puedo obtener el resultado del proceso?

Gracias!

+0

Ha intentado '.getInputStream() .toString(); 'en lugar de simplemente' .getInputStream(); '... solo un pensamiento – Zillinium

Respuesta

21

¿Hay algún motivo en particular por el que desee ejecutar el comando como un proceso externo? Hay una manera más simple:

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

Sin embargo, si realmente quiere hacerlo a través de un comando shell, aquí es la manera que tengo para trabajar:

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) { 
} 
Cuestiones relacionadas