lunedì 12 maggio 2014

Verificare se il dispositivo è rootato, ha busybox installato ed eseguire comandi root

Volete vedere se il vostro dispositivo è rootato e/o ha busybox installato? Avete la necessità di eseguire comandi root nella vostra applicazione? Come fare? In questo articolo la risposta!

Tutte e tre le operazioni sono davvero molto semplici e fanno uso della classe Process e OutpoutStream. Vediamo come fare. Per verificare se il dispositivo è rootato vi basta utilizzare questo metodo.



 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 public static boolean èRootato() {
  try {
   processo = Runtime.getRuntime().exec("su");
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return false;
  }  
  return true;
 }

Come funziona questo che abbiamo appena scritto? Semplicemente esegui il comando su come se fosse eseguito da terminale e nel caso entri in una eccezione di tipo IO (Input Output) torna false perchè, essendo il dispositivo non rootato, si verifica l'eccezione. Nel caso in cui ciò non avvenga il telefono possiede i permessi di root e quindi torna true. Il medesimo approccio si utilizza per verificare se c'è busybox.
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 public static boolean busybox() {
  try {
   processo = Runtime.getRuntime().exec("busybox");
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   return false;
  }  
  return true;
 }

Infine, per poter eseguire comandi root basta utilizzare questo metodo.
 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 public static void eseguiComando(String comando) {
  try {
   processo = Runtime.getRuntime().exec("su");
   stream = processo.getOutputStream();
   stream.write(comando.getBytes());
   stream.flush();
   stream.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }

Basta passare al metodo eseguiComando il comando da eseguire e questo, dopo aver ottenuto l'accesso root tramite su, scriverà tramite il metodo write il comando passatogli. Niente di difficilissimo! Ovviamente per poterli eseguire è necessario avere il root e busybox installato correttamente.

Nessun commento:

Posta un commento