Runtime.getRuntime Android (). Exec () para nav a través de directorios
-
30-09-2019 - |
Pregunta
Así que quiero ser capaz de escribir una aplicación que puede encender y mensajes de pantalla LogCat, dmesg, y también ser capaz de ejecutar comandos como 'ls' 'gato' 'eco' '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;
}
Me puede poner el texto "completo" a una vista de texto y ver el directorio raíz.
Sin embargo, eso es todo lo que puedo hacer. Digamos que yo quiero encontrar un directorio, y el cambio a él, 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 y "texto" "completo"
¿Alguna idea?
Solución
Puede ejecutar ls con el camino previsto qué carpetas deben ser enumerados
Runtime.getRuntime().exec(new String[] { "ls", "\\tmp"});
Otros consejos
El directorio de trabajo actual se asocia con el proceso actual. Cuando exec ( "cd tmp") va a crear un proceso, cambiando su directorio para "tmp", y después de salir del proceso. El proceso padre directorio de trabajo no cambia.
Ver esto para una discusión más general de cambiar el directorio de trabajo actual en Java .
¿Cómo escribir un archivo de shell que comprueba la existencia del archivo y todos los demás implementaion en este archivo y lo ha añadido a sdcard y desencadenar el archivo de la cáscara de Java usando getRuntimr.exec (). También puede pasar parámetros a la misma.