2011-01-06 10 views
6

Así que quiero poder escribir una aplicación que pueda encender y mostrar mensajes de logcat, dmesg, y también poder ejecutar comandos como 'ls' ' cat '' echo '' cd. 'Android Runtime.getRuntime(). Exec() para navegación a través de directorios

Si hago lo siguiente:

nativeProc = Runtime.getRuntime().exec("ls\n"); 
     BufferedWriter out = new BufferedWriter(new OutputStreamWriter(nativeProc.getOutputStream())); 
     BufferedReader in = new BufferedReader(new InputStreamReader(nativeProc.getInputStream())); 
     String line = null; 

     while ((line = in.readLine()) != null) { 
      full = full + "\n" + line; 
     } 

puedo poner el texto "lleno" a una vista de texto y ver el directorio raíz.

Sin embargo, eso es todo lo que puedo hacer. Digamos que quiero encontrar un directorio y cambiarlo, estoy teniendo problemas.

Así que si hago esto:

nativeProc = Runtime.getRuntime().exec("ls\n"); 
     BufferedWriter out = new BufferedWriter(new OutputStreamWriter(nativeProc.getOutputStream())); 
     BufferedReader in = new BufferedReader(new InputStreamReader(nativeProc.getInputStream())); 
     String line = null; 

     while ((line = in.readLine()) != null) { 
      full = full + "\n" + line; 
     } 
     /* Code here to confirm the existing of a directory*/ 


     nativeProc = Runtime.getRuntime().exec("cd tmp\n"); 
     BufferedReader in2 = new BufferedReader(new InputStreamReader(nativeProc.getInputStream())); 
     line = null; 
     String test = "\nStart1:\n"; 
     while ((line = in2.readLine()) != null) { 
      test = test + "\n" + line; 
     } 

no consigo nada para ambos "completos" y "texto"

¿Alguna idea?

Respuesta

4

Puede ejecutar ls con la ruta prevista para el cual se deben enumerar las carpetas

Runtime.getRuntime().exec(new String[] { "ls", "\\tmp"}); 
2

El directorio de trabajo actual está asociado con el proceso actual. Cuando ejecutas ("cd tmp") estás creando un proceso, cambiando su directorio a "tmp", y luego sale el proceso. El directorio de trabajo del proceso principal no cambia.

Consulte esto para una discusión más general de changing the current working directory in Java.

1

¿Qué le parece escribir un archivo de shell que comprueba la existencia del archivo y todas las demás implementaciones en este archivo y lo agrega a sdcard y desencadena el archivo de shell de Java utilizando getRuntimr.exec(). También puede pasarle parámetros .

Cuestiones relacionadas