2011-06-28 15 views
7

Wiem, że to jest dobra rada, aby przejąć kontrolę nad przyciskiem HOME dla użytkowników. Ale rozwijam aplikację blokującą Androida do celów edukacyjnych. Przeglądałem witrynę i natrafiłem na to link po wyłączeniu przycisku głównego.Przycisk Home Disable

@override 

public void onAttachedToWindow() 
{ 
     this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);  
     super.onAttachedToWindow(); 
} 

Obecnie używam powyższy kod, aby wyłączyć mój przycisk home, jednak ja nie zauważyć, że chociaż mam to w moim onCreate

getWindow.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 

nie mogę usunąć moje powiadamiania bar usuń . Proszę o poradę.

Odpowiedz

8

Po prostu użyj innego motywu dla swojej aktywności. W pliku Manifest.xml ustaw atrybut tematu swojej aktywności na Android: theme = "@ android: style/Theme.NoTitleBar.Fullscreen"

+0

ja, ale nadal ma pasek powiadomień na górze. Plus pasek powiadomień pojawia się ponownie po wyłączeniu i włączeniu ekranu. – edyim

+0

Ktoś jeszcze ma rozwiązanie. Jestem teraz bardzo zdesperowany. :( – edyim

+0

Czy używasz tego samego motywu dla wszystkich swoich działań? Wydaje się, że może być gdzieś niedopasowanie –

3

możesz wyłączyć przycisk zasilania! można spróbować to: Projekt: DisableAllButton

  • Disable Search, Back klucz: w "DisableAllButton.java"

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
        return false; 
    } 
    
  • Wyłącz klawisz Home: w "DisableAllKey.java"

    @Override 
    public void onAttachedToWindow() { 
        // TODO Auto-generated method stub 
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
        super.onAttachedToWindow(); 
    } 
    
  • Wyłącz klucz zasilania: w "DisableAllKey.java"

    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Activity.KEYGUARD_SERVICE); 
    KeyguardManager.KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); 
    lock.disableKeyguard(); 
    
  • w AndroidManifest

    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission> 
    
  • i ustawionym na pełnym ekranie w AndroidManifest

    <application android:icon="@drawable/icon" android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> 
    

zrobić! :RE.

+0

Dziękuję za wiadomość, ale nie mogę dostać tego, co chcę w mojej aplikacji. Moja aplikacja to w zasadzie blokada który jest wywoływany przez sms. Current z ekranem telefonu "on", jeśli pojawi się wiadomość SMS, aktywność zostanie uruchomiona bez paska powiadomień. Jednak jeśli ekran jest "wyłączony", KeyguardManager usuwa ekran blokady klawiatury Android, ale otrzymuję pasek powiadomień. Co może nie być pożądane, ponieważ mogą tam być aplikacje, które mogą ominąć mój ekran blokady. – edyim

+0

gdzie jest projekt DisableAllButton – pengwang

+0

@pengwang W mxplayer disableAllButton.So jak to jest możliwe? – kyogs

0

sprawdzić kod źródłowy Androida, View.java

public static final int STATUS_BAR_DISABLE_HOME = 0x00200000; 

STATUS_BAR_DISABLE_HOME flaga jest hide ze standardowego API.

możemy po prostu użyć 0x00200000 ustawić widoczność System UI, jak:

View decorView = getWindow().getDecorView(); 
decorView.setSystemUiVisibility(decorView.getSystemUiVisibility()|0x00200000); 

ale należy dodać

<uses-permission android:name="android.permission.STATUS_BAR" /> 

pierwsze, to uprawnienie przyznane tylko do systemu aplikacje