2013-05-02 9 views
7

Próbuję utworzyć aplikację dla tabletu z Androidem.Blokowanie wszystkich sposobów zamykania aplikacji Android

Ten tablet będzie wyświetlany publicznie i może go dotknąć.

Będę blokować wszystko, aby zamknąć aplikację, z wyjątkiem menu przycisku/preferencji, które pyta o hasło.

Ale po niektórych badaniach nie jestem surowa, to jest możliwe mam na myśli długie naciśnięcie przycisku zasilania nadal działa, również w domu i powrót buton. Więc pytanie to jest możliwe i czy tak jest?

+0

dlaczego nagle odpowiedź nieakceptowana? –

+0

Właśnie odkryłem jakąś nową funkcję, która to umożliwia, ale wykonuję test przed wysłaniem – Jebik

+0

według mojej wiedzy, że nie możemy tego osiągnąć bez interakcji użytkownika, jeśli znaleźliście sposób, wystarczy napisać kod, który możemy poznać. –

Odpowiedz

1

I w końcu znaleźć sposób to zrobić

No doc o tym

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

Ale 8 jest ukrytą flagą do całkowitego wyłączenia interfejsu systemu, ponieważ aplikacja jest na pełnym ekranie (Zachowaj ostrożność, jeśli używasz tego, aby zamknąć aplikację) Flaga 8 jest całkowicie nieudokumentowana, więc mogę " t tell you since, ponieważ z wersją to działa i dev dla wersji 4.0 i 4.1 działa dla obu. Dunno dla wersji 3.0, ale nie ma żadnego urządzenia do wypróbowania.

I nie zapomnij android.permission.EXPAND_STATUS_BAR w swój manifest

to nie jest idealne, ponieważ jeśli używasz jakiegoś powiadomienie dialogu SystemUI stają się widoczne, ale jeśli nie używać żadnych nie można zamknąć długi moc prasy dokonać powerpopup którzy czynią systemu ui widoczny zbyt

Ale można go szybko zabić wit następujący sposób

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

Jeśli to zrobisz, nie można zamknąć już swoją aplikację (lub ja zapomniałem sposób na clo Se to?) Więc pamiętać przed zrobić coś podobnego SureLock (APP dostępnej na playstore), 3Dotknij w 2 s rozpocząć działalność, którzy proszą o podanie rzucić to

Nadzieja to pomaga i jest kompletna

I ostatnia pytanie jest nadal niezaznaczone Czy możemy spersonalizować widok alertu, aby wywołać setSystemUiVisibility (8); bo jeśli bateria dokonać wpisu lub jeśli uważasz, że naprawdę trzeba alert, będzie to pokazać systemu UI podczas alert jest widoczny

+0

próbowałem tego, ale jestem w stanie nacisnąć przycisk home . –

+0

jakie jest twoje urządzenie? mogę też w mojej zakładce galaxy, ale ustawiłem moją aplikację jako domyślny dom, więc pojedyncze naciśnięcie przycisku home nic nie robi. – Jebik

+0

Używam samsung galaxy nexus –

2

Jestem prawie pewien, że nie da się tego zrobić bez dostępu root'a do urządzenia, aby uniknąć sytuacji, w której aplikacja trollingowa przejmie kontrolę nad urządzeniem z Androidem, jeśli zdarzy się, że go uruchomisz.

+0

Mogę być rootem, ale po tym aplikacja będzie instalowana na wielu urządzeniach i nie wiem czy wszystko procedura root może być wykonana przez klienta ... – Jebik

3

można znaleźć wszystkie odpowiedzi na już zadawane pytania stackoverflow

Home Button

Return Button

Power Button

+0

Tak, szukam niektórych, ale mówią, że nie jest możliwe dla niektórych, dlatego poprosiłem o wyłączenie wszystkich, jeśli ktoś wie tak to zrobić – Jebik

1

Po prostu nie mogę tego zrobić, nie można zatrzymać użytkownikowi naciśnięcie klawisza Home Button

można zablokować Powrót naciśnij wydarzenie.

można zatrzymać użytkownika od naciśnięcie przycisku HOME korzystając onAttachedToWindow() ale to nie może pracować z android 3.2

0

Najpierw trzeba dodać swoją aplikację w domu z oczywistego

<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> 

po doda flagi

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

Blokada Wyłącz urządzenie

private void disableLock() { 

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

Disable Strona główna Kliknij i przytrzymaj

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

Po uruchomieniu musisz ustawić swoją aplikację na domową !!!

Powiązane problemy