Android Runtime.getRuntime(). Exec() para navegación a través de directorios
command-line terminal (3)
¿Qué tal si escribimos un archivo de shell que comprueba la existencia del archivo y todas las demás implementaciones en este archivo y lo agregamos a sdcard y activamos el archivo de shell desde java mediante getRuntimr.exec (). También puede pasarle parámetros.
Así que quiero poder escribir una aplicación que pueda encender y visualizar mensajes de logcat, dmesg, y también poder ejecutar comandos como ''ls'' ''cat'' ''echo'' ''cd''.
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 "completo" en 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.
Entonces 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 recibo nada para "completo" y "texto"
¿Algunas ideas?
Puede ejecutar ls con la ruta proporcionada para la que se deben enumerar las carpetas
Runtime.getRuntime().exec(new String[] { "ls", "//tmp"});
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.
Vea esto para una discusión más general sobre cómo cambiar el directorio de trabajo actual en Java .