2011-01-06 10 views
6

Quindi voglio essere in grado di scrivere un'app che può accendere e visualizzare messaggi logcat, dmesg, ed anche essere in grado di eseguire comandi come 'ls' ' cat '' echo '' cd. 'Android Runtime.getRuntime(). Exec() a nav attraverso le directory

Se faccio la seguente:

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; 
     } 

posso mettere il testo "pieno" ad un testo Visualizza e vedere la directory principale.

Tuttavia, questo è tutto quello che posso fare. Diciamo che voglio trovare una directory e cambiarla, sto avendo problemi.

Quindi, se faccio questo:

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; 
     } 

ricevo nulla per entrambi i "pieni" e "testo"

Tutte le idee?

risposta

4

È possibile eseguire ls con il percorso previsto per i quali dovrebbero essere incluso cartelle

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

La directory di lavoro corrente è associata al processo corrente. Quando esegui ("cd tmp") stai creando un processo, cambiando la sua directory in "tmp", e quindi il processo termina. La directory di lavoro del processo genitore non cambia.

Vedere questo argomento per una discussione generale su changing the current working directory in Java.

1

Come scrivere un file di shell che verifica la presenza del file e di tutti gli altri strumenti in questo file e lo ha aggiunto a sdcard e attiva il file di shell da java utilizzando getRuntimr.exec(). Puoi anche passargli i parametri .

Problemi correlati