5

Sto sviluppando un'applicazione solo per tablet, in cui è necessario eseguire l'applicazione sullo schermo intero del tablet.Come nascondere la barra di sistema inferiore nel tablet Android

Per questo ho usato seguente codice nella mia attività principale:

getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

Questo frammento di codice rimuove solo la barra del titolo e la barra delle operazioni. Ma nei tablet c'è una barra di sistema in basso (con il tasto home e back). Voglio anche rimuovere o nascondere questa barra di sistema.

Ho cercato, ma c'è solo seguente soluzione:

  1. Non c'è API per rimuovere o nascondere la barra di sistema.
  2. È possibile utilizzare alcune app Android per nascondere la barra di sistema. (Per esempio: SureLock, hidebar, ecc)

La mia domanda è:

  1. Non è davvero possibile in Android?
  2. Sopra l'app disponibile (ad esempio il surelock, nascondere la barra, ecc.) Anche la barra nascosta. Significa che stanno usando qualcosa per farlo. Può essere usato questo qualcosa nella nostra app in modo che l'utente non abbia bisogno di scaricare queste app separatamente.

Per favore guidami.

So che questa non è una buona idea. Ma la mia app è solo per tablet con Android 4.0 o versioni successive e il tablet eseguirà solo questa singola app, quindi non è necessario tornare indietro e utilizzare il pulsante Home. Ecco perché il mio requisito è quello di utilizzare l'app a schermo intero.

+1

Non credo sia una buona idea nascondere la barra di sistema, perché questo è il posto in cui l'utente può effettivamente controllare il comportamento della tua app - pulsante indietro/pulsante home. – hardartcore

+0

http://stackoverflow.com/a/12605313/931982 – stinepike

risposta

5

Questo non è possibile a meno che tu non abbia accesso come root. In alternativa, puoi creare un launcher application.

Altrimenti sarà fuori dallo scopo dell'applicazione per nascondere la barra di sistema/navigazione.

+0

Che cosa intendete per "È possibile solo se si dispone dell'accesso root o se è stata creata un'applicazione di avvio". ? –

+1

Android è un sistema operativo basato su Linux. Così come in Linux, Android ha anche due tipi di utenti: 1. Super/utente root 2. Utente normale. Ora se ottieni l'accesso come utente root o se crei un'applicazione come Go Launcher o qualcosa del genere, solo tu puoi fare ciò che vuoi – Shrikant

+0

Come posso avere accesso root alla mia app? E come è possibile se ho accesso root per nascondere la barra di sistema? –

9

Se si ha accesso di root è possibile utilizzare questo codice di altri saggi non è permesso

try{ 
    //REQUIRES ROOT 
    Build.VERSION_CODES vc = new Build.VERSION_CODES(); 
    Build.VERSION vr = new Build.VERSION(); 
    String ProcID = "79"; //HONEYCOMB AND OLDER 

    //v.RELEASE //4.0.3 
    if(vr.SDK_INT >= vc.ICE_CREAM_SANDWICH){ 
     ProcID = "42"; //ICS AND NEWER 
    } 



    //REQUIRES ROOT 
    Process proc = Runtime.getRuntime().exec(new String[]{"su","-c","service call activity "+ ProcID +" s16 com.android.systemui"}); //WAS 79 
    proc.waitFor(); 

}catch(Exception ex){ 
    Toast.makeText(getApplicationContext(), ex.getMessage(), Toast.LENGTH_LONG).show(); 
} 

See this

+0

Ciao, la risposta funziona perfettamente. Ma come posso mostrare di nuovo il bar puoi aiutarmi per favore? – mesopotamia

0

Dopo un sacco di ricerca su internet, sono riuscito ad ottenere la barra di sistema per nascondere e appaiono in un dispositivo 4.2 utilizzando:

per nascondere:

Runtime.getRuntime().exec("service call activity 42 s16 com.android.systemui"); 

Oppure utilizzare 79 anziché 42 per API inferiore a 14. Potrebbe inoltre essere necessario includere l'autorizzazione SET_DEBUG_APP, nel qual caso è necessario che l'applicazione sia firmata con la chiave di sistema o installata nella directory/system/app /.

per mostrare:

Runtime.getRuntime().exec("am startservice --user 0 -n com.android.systemui/.SystemUIService"); 

In alternativa alcune persone hanno utilizzato l'opzione -a (-n invece di), anche se questo stava causando un errore sul mio dispositivo:

Errore: Non trovato; nessun servizio avviato.

7

Da Android API 4.0 e versioni successive è possibile utilizzare il seguente codice per nascondere la barra di sistema in basso.

View decorView = getWindow().getDecorView(); 
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 
      | View.SYSTEM_UI_FLAG_FULLSCREEN; 
decorView.setSystemUiVisibility(uiOptions); 
+0

Questo ha funzionato come un fascino! Grazie! – NateW

Problemi correlati