9

I do know that it is ill advice to take control of the HOME button for users. But I'm developing a android lockdown application for educational purposes. I was browsing the site and came upon this link on disabling the home button.

@override

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

Currently I'm using the above code to disable my home button, however I do notice that even though I have this in my onCreate

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

I am unable to remove my notification bar remove. Please advice.

Community
  • 1
  • 1
edyim
  • 145
  • 1
  • 3
  • 9

3 Answers3

9

Just use a different theme for your activity. In your Manifest.xml, set the theme attribute of your activity to android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

Stefan H Singer
  • 5,469
  • 2
  • 25
  • 26
  • I did, but still has the notification bar on the top. Plus the notification bar appears again after power off and on of the screen. – edyim Jun 28 '11 at 14:42
  • Anyone else have a solution. I'm quite desperate now. :( – edyim Jun 29 '11 at 01:24
  • Are you using the same theme for all your activities? Seems there might be an mismatch somewhere? – Stefan H Singer Jun 29 '11 at 09:00
  • Nope. I only using it on the lockscreen activity. I'm wondering if it could be the onAttachedToWindow and WindowManager.LayoutParams.TYPE_KEYGUARD that is causing the notification to appear. – edyim Jun 29 '11 at 17:26
  • Aren't there any open source lockscreen replacements you could have a look at? – Stefan H Singer Jun 29 '11 at 19:23
  • I'm still relatively new to Android. I've heard of home replacement to disguise as lockscreen. But there is no step-by-step documentation. Can you point me in the correct direction. – edyim Jun 30 '11 at 03:35
  • Never made one myself. Sorry. – Stefan H Singer Jun 30 '11 at 06:21
7

you can disable power button! you can try this: Project: DisableAllButton

  • Disable Search, Back key: in "DisableAllButton.java"

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        return false;
    }
    
  • Disable Home key: in "DisableAllKey.java"

    @Override
    public void onAttachedToWindow() {
        // TODO Auto-generated method stub
        this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
        super.onAttachedToWindow();
    }
    
  • Disable Powerkey: in "DisableAllKey.java"

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

    <uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>
    
  • and set fullscreen in AndroidManifest

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

done! :D.

takrl
  • 6,356
  • 3
  • 60
  • 69
luongnv89
  • 1,079
  • 12
  • 19
  • Thanks for the input. However this isnt getting what I desire in my app. My app is basically a lockscreen which is triggered by an sms. Current with the phone screen "on", if the sms arrives the activity is started without the notification bar. However if the screen is "off", KeyguardManager does remove the android Keyguard screen but I get a notification bar. Which may not be desirable since there may be apps there that can bypass my lockscreen. – edyim Jul 14 '11 at 04:59
  • where is the project DisableAllButton – pengwang Jul 26 '11 at 13:14
  • @pengwang In mxplayer disableAllButton.So how is it possible ? – kyogs Sep 07 '13 at 07:02
  • @kyogs if your disable home key,i think you should overload onuserhint – pengwang Sep 09 '13 at 01:12
  • @pengwang i agree with you.but have you any idea to disable home key ? – kyogs Sep 09 '13 at 06:31
  • are you see home demo of sdk samples?i think you can see it – pengwang Sep 09 '13 at 07:52
1

check Android source code, View.java

public static final int STATUS_BAR_DISABLE_HOME = 0x00200000;

STATUS_BAR_DISABLE_HOME flag is hide from the standard api.

we can just use 0x00200000 to set system ui visibility ,as:

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

but you should add

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

first, this permission only granted to system apps

lynn8570
  • 1,685
  • 1
  • 14
  • 24