Home button disable
Asked Answered
P

3

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.

Paregoric answered 28/6, 2011 at 13:17 Comment(0)
W
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"

Wrote answered 28/6, 2011 at 13:21 Comment(7)
I did, but still has the notification bar on the top. <activity android:name="android.securitas.lockscreen" android:screenOrientation="portrait" android:theme="@android:style/Theme.NoTitleBar.Fullscreen </activity> However it does work if i place it on the <application android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar.Fullscreen"> Plus the notification bar appears again after power off and on of the screen.Paregoric
Anyone else have a solution. I'm quite desperate now. :(Paregoric
Are you using the same theme for all your activities? Seems there might be an mismatch somewhere?Wrote
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.Paregoric
Aren't there any open source lockscreen replacements you could have a look at?Wrote
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.Paregoric
Never made one myself. Sorry.Wrote
A
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.

Albinus answered 30/6, 2011 at 4:39 Comment(6)
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.Paregoric
where is the project DisableAllButtonHemipode
@Hemipode In mxplayer disableAllButton.So how is it possible ?Heimlich
@Heimlich if your disable home key,i think you should overload onuserhintHemipode
@Hemipode i agree with you.but have you any idea to disable home key ?Heimlich
are you see home demo of sdk samples?i think you can see itHemipode
T
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

Trierarch answered 27/6, 2014 at 9:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.