2015-01-20 32 views
8

Ho usato questa risposta per ottenere una modalità chiosco per la mia app: https://stackoverflow.com/a/26013850Posso disabilitare systemui dalla mia app Android?

ho radicato il tablet con Kingo Radice e poi eseguito i seguenti comandi:

adb shell > 
su > 
pm disable com.android.systemui > 

Sto costruendo un app che sarà solo utilizzato sui nostri dispositivi come chioschi ....

Funziona alla grande, MA .. Mi piacerebbe eseguire la disabilitazione e abilitare il sistema ui dall'applicazione Android stessa.

I comandi di sistema sono possibili all'interno di un'applicazione?

+0

E 'sicuro per disabilitare com.android.systemui o può succedere qualcosa di brutto su alcuni dispositivi? – JohnyTex

+2

@JohnyTex: questo è un caso speciale in cui avevo bisogno che gli utenti NON avessero la possibilità di fare nulla se non usare la mia app. Il dispositivo era di proprietà della mia azienda e inserito nei chioschi. In questo modo è stato quasi impossibile uscire dall'app in cui ti trovavi perché non c'era più un pulsante Home, un pulsante Indietro o un'area a discesa di notifica. – silversunhunter

+0

Sono arrivato a una situazione in cui la disattivazione di systemui non ha aiutato: è ancora in esecuzione anche se disabilitata. Vedi: http://android.stackexchange.com/questions/119508/app-is-running-even-though-disabled-why Come può essere eseguito mentre è disabilitato? – JohnyTex

risposta

14
/** 
* Uses Root access to enable and disable SystemUI. 
* @param enabled Decide whether to enable or disable. 
*/ 
public void setSystemUIEnabled(boolean enabled){ 
    try { 
     Process p = Runtime.getRuntime().exec("su"); 
     DataOutputStream os = new DataOutputStream(p.getOutputStream()); 
     os.writeBytes("pm " + (enabled ? "enable" : "disable") 
       + " com.android.systemui\n"); 
     os.writeBytes("exit\n"); 
     os.flush(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

Funziona bene. Uso:

setSystemUIEnabled(true); // Enable SystemUI 
setSystemUIEnabled(false); // Disable SystemUI 
+0

Sto per provarlo ma ho una domanda. Essendo che sto usando un software di root creato per i manichini (accesso root con un clic) mi chiedo se c'è un modo per questa classe di sapere se ha accesso root o no. – silversunhunter

+0

Un'altra domanda: dovrebbe essere (booleano "abilitato") ??? – silversunhunter

+1

È possibile utilizzare questa funzione chiamando setSystemUIEnabled (true); da qualche parte nel tuo codice. Appena testato, funziona bene. Determinarsi se c'è un accesso alla radice è spiegato [qui] (http://stackoverflow.com/a/8097801/4193263). Accetta questa risposta se ti ha aiutato. – ByteHamster