2011-02-10 16 views
6

Sto provando a eseguire uno script di shell dalla mia applicazione Android.Come possiamo eseguire un file di script della shell dalla mia applicazione Android?

Per prima cosa ho cercato di correre script di shell da Java, e che funziona bene per tutti i comandi come pwd, cd, netstat. spostando il file, copiando il file.

che io abbia provato da un'applicazione Android e sto ottenendo in uscita per cd, pwd, netstat e per le dichiarazioni di eco che si trovano in sceneggiatura, ma per la movimentazione e la copia del file non si lavora.

Sono necessarie le autorizzazioni per eseguire questi comandi dal file di script mentre questi comandi funzionano correttamente dalla shell di adb?

il mio sguardo codice come questo:

void execCommandLine() 
    { 
     //*********************** 
     try 
     { 
      Runtime rt = Runtime.getRuntime(); 
      Process proc = rt.exec("ls -all"); 

      proc = rt.exec("sh /data/shTest.sh"); 
      InputStream is = proc.getInputStream(); 
      InputStreamReader isr = new InputStreamReader(is); 
      BufferedReader br = new BufferedReader(isr); 
      String line; 

     while ((line = br.readLine()) != null) { 
     System.out.println(line); 
     } 
      } catch (Throwable t) 
      { 
      t.printStackTrace(); 
      } 

e il mio file di script è il seguente: Solo

#!/bin/sh 
echo "Knowledge is Power" 
echo "I am a script" 
echo $PATH 
netstat 
pwd 
cd /data 
pwd 
cd /system/bin 
pwd 
    mv /data/local/hello.txt /data/ 
    cp /data/local/hello1.txt /data/ 
cd /data/local/tmp 
cd /system/bin 

i comandi cp e mv non stanno mostrando risultato atteso. Per favore, dammi una guida.

Per prima cosa sto provando e testandolo nell'emulatore. In/system/bin ha mv commond e ho anche provato con busybox ma non ho ottenuto risultati attesi. Per i privilegi di root come procedere ... Dare qualche idea per procedere.

+0

Perché si posta una nuova domanda piuttosto che modificare quella precedente? –

+0

@anshu hai trovato la soluzione alla domanda precedente.Se sì per favore dimmi la soluzione. – Ramakrishna

+0

puoi farlo tramite 'adb shell'? – spatulamania

risposta

1

Alcuni suggerimenti su cosa potrebbe accadervi. hai un telefono rooted? Avete i comandi mv e cp in/system/bin? Infine, potresti provare a usare busybox, se il tuo telefono ce l'ha. Forse per prima cosa dovresti richiedere i privilegi di root ...

+0

Prima cosa sto provando e testandolo in emulatore. In/system/bin ha mv commond e ho anche provato con busybox ma non ho ottenuto risultati attesi. Per i privilegi di root come procedere ... Dare qualche idea per procedere. – anshu

4

mv e cp entrambi mi danno problemi nella shell di Android. molte altre persone usano cat x > y o simili con risultati decenti.

+0

Soluzione piacevole, +1. Se sei interessato ti ho dato qualche spiegazione dei tuoi problemi. –

1

Sweeney ti ha già dato una soluzione, ma ecco una spiegazione.

Android non è GNU Linux, quindi cp e mv come predefiniti sono piuttosto diversi. Su Android gestiscono solo i collegamenti reali, quindi, ad esempio, se si sta tentando di spostare i file tra le partizioni, i dati scompaiono, poiché non sposta i dati dalla partizione alla partizione, ma regola i collegamenti reali. Utilizzare busybox, o creare script cp e mv, che cat file > otherfile e per mv a rm file è un must se non è possibile modificare gli script, ma è meglio cambiare gli script, poiché li rende portabili a sistemi che non hanno i tuoi hack.

0

La soluzione che utilizzo è un collegamento simbolico. Ad esempio se in/system/bin non sono presenti comandi come cp, grep o mv, di sicuro sono presenti in busybox. Per questo ho appena rimontare/Sistema RW utilizzando il comando (da emulatore di terminale) e di creare collegamenti simbolici su mount -o rw,remount /system cd /system/bin ln -s busybox cp # cp or other command

Problemi correlati