2013-05-02 11 views
7

Sto cercando di dev una domanda di tablet android.Blocca tutto modo per chiudere un'applicazione Android

Questo tablet sarà spettacolo al pubblico e si può toccare.

lo farò per bloccare tutto il modo per chiudere un app ad eccezione di un menu del pulsante/preferenza che chiedono una password.

Ma dopo alcune ricerche non sto sur questo è possibile voglio dire lunga pressione sul tasto di accensione ancora lavorare, a casa buton troppo e buton ritorno. Quindi la domanda numero è possibile e se è come?

+0

perché improvvisamente rispondere non accettato? –

+0

ho appena scoperto alcune nuove funzionalità che lo rendono possibile, ma faccio qualche test prima di postarlo – Jebik

+0

, per quanto ne so, non possiamo realizzarlo senza l'interazione dell'utente, se hai trovato modo, solo il codice postale che possiamo conoscere. –

risposta

1

ho finalmente trovato un modo per fare questo

No doc su questo

getWindow() .getDecorView() setSystemUiVisibility (8).;

Ma l'8 è una bandiera nascosta completamente disabilitare la UI del sistema con la tua app è permanly a schermo intero (Fate attenzione se si utilizza questo mantenere un modo per chiudere app) La bandiera 8 è completamente senza documenti in modo da poter' Ti dico da quando con la versione questo lavoro lo faccio per 4.0 e 4.1 funziona per entrambi. Non so per 3.0 ma non ho nessun dispositivo per provarlo.

E non dimenticate android.permission.EXPAND_STATUS_BAR nel manifestare

questo non è perfetto perché se si utilizza qualche dialogo avviso lo systemUi diventano visibili, ma se non si utilizza qualsiasi non è possibile uscire premere a lungo il potere fare un powerpopup che fanno sistema ui visibile anche

Ma si può uccidere lo spirito veloce il seguente metodo

public void onWindowFocusChanged(boolean hasFocus) { 
super.onWindowFocusChanged(hasFocus); 
if(!hasFocus) { 
    Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); 
    sendBroadcast(closeDialog); 
    } 
} 

Se si esegue questa operazione non si può smettere di più la vostra applicazione (o ho dimenticato un modo per clo vero?) In modo da tenere a mente prima di fare qualcosa di simile a SureLock (app disponibile, a playstore), 3Toccare in 2 s avviare un'attività che chiedono un pass per uscire da essa

Spero che questo può aiutare ed è completo

E un ultima la domanda è ancora senza risposta Possiamo personalizzare una vista di avviso per chiamare setSystemUiVisibility (8); perché se la batteria rendono un avviso o, se si pensa che si ha realmente bisogno un avviso, questo mostrerà sistema di interfaccia utente, mentre si avviso è visibile

+0

ho provato questo, ma sono in grado di premere il tasto home . –

+0

qual è il tuo dispositivo? posso anche nella mia scheda galassia, ma ho impostato la mia app come predefinita, quindi premere una sola volta sul pulsante home non fa – Jebik

+0

sto usando Samsung Galaxy Nexus –

2

Sono abbastanza sicuro che questo non può essere fatto senza l'accesso root al dispositivo, al fine di evitare un'applicazione troll di prendere il controllo del vostro dispositivo Android se vi capita di eseguirlo.

+0

Posso essere root ma dopo questa app verrà installata su un sacco di device e non so se tutto la procedura di root può essere eseguita dal client ... – Jebik

3

si possono trovare tutte le risposte a domande già in StackOverflow

Home Button

Return Button

Power Button

+0

Sì, cerco alcuni ma dicono che non è possibile per alcuni perché ho chiesto di disabilitare tutto se qualcuno sa comunque farlo – Jebik

1

Semplicemente non si può fare questo, non si può smettere di utente a premendo Home Button

è possibile bloccare Indietro stampa evento.

È possibile interrompere utente agendo sul tasto casa utilizzando onAttachedToWindow() ma questo potrebbe non lavorare da Android 3.2

0

In un primo momento è necessario aggiungere l'applicazione come casa dal tuo manifesta

<activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.settings.SETTINGS" /> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.HOME" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 

      </intent-filter> 
    </activity> 

dopo flag Aggiungi

getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY); //(dont forget to add flag before `setContentView`) 

blocco del dispositivo Disabilita

private void disableLock() { 

     KeyguardManager keyguardManager = (KeyguardManager) getSystemService(MainActivity.KEYGUARD_SERVICE); 
     KeyguardManager.KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); 
     lock.disableKeyguard(); 
    } 

Disabilita casa di Long sceglie

@Override 
    protected void onUserLeaveHint() { 
     startActivity(new Intent(MainActivity.this,MainActivity.class)); 
     finish(); 
     super.onUserLeaveHint(); 
    } 

Dopo corsa è necessario impostare la vostra applicazione per applicazione a casa !!!