Home button disable

All we need is an easy explanation of the problem, so here it is.

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.

How to solve :

I know you bored from this bug, So we are here to help you! Take a deep breath and look at the explanation of your problem. We have many solutions to this problem, But we recommend you to use the first method because it is tested & true method that will 100% work for you.

Method 1

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”

Method 2

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.

Method 3

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

Note: Use and implement method 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply