Autore Topic: [facile] Uso dei permessi di root in un'applicazione  (Letto 7276 volte)

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
[facile] Uso dei permessi di root in un'applicazione
« il: 21 Marzo 2010, 18:26:01 CET »
+3
Livello di difficoltà: facile
Versione SDK utilizzata: 1.6
Link al file compresso del progetto eclipse: file in allegato

Sappiamo tutti come ormai sia possibile acquisire i permessi di root su molti terminali android. Questi permettono di effettuare operazioni non consentite all'utente normale. Vediamo quindi come usarli da un'applicazione.

Il programma di esempio é semplicissimo. Alla pressione del pulsante viene eseguito il metodo runRoot con argomento "reboot". reboot é il comando per riavviare il terminale. Il metodo runRoot non fa altro che aprire uno stream di input che inizia col comando "su" che, come sa chi usa un sistema unix, permette di acquisire la shell di root. Di seguito al comando "su" viene eseguita la stringa che abbiamo passato (nel nostro caso "reboot") e poi viene chiuso lo stream aperto.

Sorgenti:

Codice (Java): [Seleziona]
public class RootReboot extends Activity {
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);

                Button rebootBtn = (Button) findViewById(R.id.rebootBtn);

                rebootBtn.setOnClickListener(new OnClickListener() {
                        public void onClick(View v) {
                                runRoot("reboot");
                        }
                });
        }

        public void runRoot(String command) {
                Process process = null;
                DataOutputStream os = null;
                try {
                        process = Runtime.getRuntime().exec("su");
                        os = new DataOutputStream(process.getOutputStream());
                        os.writeBytes(command + " \n");
                        os.writeBytes("exit\n");
                        os.flush();
                        process.waitFor();
                } catch (Exception e) {
                } finally {
                        try {
                                if (os != null) {
                                        os.close();
                                }
                                process.destroy();
                        } catch (Exception e) {
                        }
                }
        }
}

Codice (XML): [Seleziona]
<?xml version="1.0"  encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center">
        <Button
                android:id="@+id/rebootBtn"
                android:layout_width="200sp"
                android:layout_height="wrap_content"
                android:text="Reboot!" />
</LinearLayout>
« Ultima modifica: 21 Marzo 2010, 19:22:12 CET da JD »
Postate il LogCat LogCat LogCat LogCat LogCat

Offline vicvondoom

  • Utente junior
  • **
  • Post: 71
  • Respect: +4
    • Mostra profilo
    • vicvondoom
  • Dispositivo Android:
    Sony XPeria U
  • Play Store ID:
    Orlando Davide
  • Sistema operativo:
    Windows 8
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #1 il: 16 Dicembre 2010, 10:43:37 CET »
0
Grande! Cercavo proprio del codice per fare il reboot!
Ma al reboot hai i permessi di root? No vero? A parte che non mi servirebbero..
"Non c'è cattivo più cattivo di un buono quando diventa cattivo!" Bud Spencer in 'Chi trova un amico trova un tesoro'.

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #2 il: 16 Dicembre 2010, 14:33:36 CET »
0
Nell'esempio uso i permessi di root per fare il reboot.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline seprin

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #3 il: 24 Febbraio 2011, 18:30:24 CET »
0
o
« Ultima modifica: 25 Febbraio 2011, 10:40:47 CET da seprin »

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #4 il: 24 Febbraio 2011, 19:00:00 CET »
0
Ciao sarei anche io molto interessato al reboot del dispositivo, ma uso il sistemo operativo windows e quindi mi occorrerebbe lo stesso codice di sopra però per windows..
Ti ringrazio
ciao
Qua stiamo parlando di android, che c'entra windows?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline seprin

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #5 il: 24 Febbraio 2011, 19:14:14 CET »
0
o
« Ultima modifica: 25 Febbraio 2011, 10:41:15 CET da seprin »

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #6 il: 24 Febbraio 2011, 19:17:55 CET »
0
Scusa la mia ignoranza ma sono alle prime armi.
Ti spiego quello che ho capito :
non so se ho capito bene ma questa istruzione process = Runtime.getRuntime().exec("su"); dovrebbe aprire la schell di unix
dato che io sto su windows che comando dovei usare al posto di "su"
Scusami ancora.....

Sai cos'é android?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline seprin

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #7 il: 24 Febbraio 2011, 19:25:14 CET »
0
o
« Ultima modifica: 25 Febbraio 2011, 10:39:52 CET da seprin »

Offline JD

  • Amministratore
  • Utente storico
  • *****
  • Post: 1600
  • Respect: +232
    • leinardi
    • Mostra profilo
  • Dispositivo Android:
    LG Nexus 5
  • Sistema operativo:
    L'ultima Ubuntu
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #8 il: 24 Febbraio 2011, 19:54:01 CET »
0
La esegui su un dispositivo reale rootato? L'emulatore non ha i permessi di root...
È stata trovata una soluzione al tuo problema?
Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato ;).
E se hai aperto tu il thread marcalo come risolto cliccando !

Offline seprin

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #9 il: 25 Febbraio 2011, 00:06:02 CET »
0
No non lo eseguo su un dispositivo reale..
io cercavo del codice che mi permettesse di riavviare il mio emulatore android, e credevo che il codice che tu avevi scritto andasse bene...

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #10 il: 25 Febbraio 2011, 13:23:59 CET »
0
L'emulatore non ha i permessi di root...

Comunque per curiositá a che ti serve riavviare l'emulatore da un'app?
Postate il LogCat LogCat LogCat LogCat LogCat

Offline seprin

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #11 il: 25 Febbraio 2011, 15:03:05 CET »
0
Il problema è che sto facendo del testing sulle applicazioni android usando robotium e a me occorreva a un certo punto del mio test riavviare l'applicazione, e dato che non ci sono riuscito credevo che questo reboot che avevo letto potesse essermi di aiuto...
A questo punto ho capito che ho sbagliato.......
Scusami ma non è che sapresti aiutarmi per dirmi del codice su come poter riavviare una applicazione?
Scusami ancora..

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #12 il: 25 Febbraio 2011, 15:34:57 CET »
0
Il problema è che sto facendo del testing sulle applicazioni android usando robotium e a me occorreva a un certo punto del mio test riavviare l'applicazione, e dato che non ci sono riuscito credevo che questo reboot che avevo letto potesse essermi di aiuto...
A questo punto ho capito che ho sbagliato.......
Scusami ma non è che sapresti aiutarmi per dirmi del codice su come poter riavviare una applicazione?
Scusami ancora..
la chiudi e la riapri...
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline seprin

  • Nuovo arrivato
  • *
  • Post: 6
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    windows
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #13 il: 25 Febbraio 2011, 16:18:35 CET »
0
e si ma come?
non voglio farlo manualmente ma tramite codice nel mio test case

Offline StepGiordano

  • Nuovo arrivato
  • *
  • Post: 15
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    P500
  • Sistema operativo:
    Windows 7
Re:[facile] Uso dei permessi di root in un'applicazione
« Risposta #14 il: 23 Agosto 2011, 23:42:37 CEST »
0
Ciao potresti aggiornare il proggetto con SDK 2.2 o 2.3.3 ?  Grazie mille  :-)