0

I found the code that is blocking the home button and I did want to try it, but when I run it nothing happens, even my layout doesn't show and also I have an error when I go to the home screen (see below the code). What do I do wrong?

public  class LockActivity extends Activity{
    private LockscreenUtils mLockscreenUtils;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            setContentView(R.layout.layout_lock);
            lockHomeButton();

        }
        public void unLockHomeButton() {
            mLockscreenUtils.unlock();
        }
        public void lockHomeButton() {
             mLockscreenUtils.lock(LockActivity.this);
        }
 }

This is where I block the home button:

public class LockscreenUtils {
    private OverlayDialog mOverlayDialog;

    public void lock(Activity activity) {
        if (mOverlayDialog == null) {
            mOverlayDialog = new OverlayDialog(activity);
            mOverlayDialog.show();
        }
    }

    public void unlock() {
        if (mOverlayDialog != null) {
            mOverlayDialog.dismiss();
            mOverlayDialog = null;
        }
    }

    private static class OverlayDialog extends AlertDialog {

        public OverlayDialog(Activity activity) {
            super(activity, R.style.OverlayDialog);
            WindowManager.LayoutParams params = getWindow().getAttributes();
            params.type = TYPE_SYSTEM_ERROR;
            params.dimAmount = 0.0F; // transparent
            params.width = 0;
            params.height = 0;
            params.gravity = Gravity.BOTTOM;
            getWindow().setAttributes(params);
            getWindow().setFlags(FLAG_SHOW_WHEN_LOCKED | FLAG_NOT_TOUCH_MODAL, 0xffffff);
            setOwnerActivity(activity);
            setCancelable(false);
        }

        public final boolean dispatchTouchEvent(MotionEvent motionevent) {
            return true;
        }

        protected final void onCreate(Bundle bundle) {
            super.onCreate(bundle);
            FrameLayout framelayout = new FrameLayout(getContext());
            framelayout.setBackgroundColor(0);
            setContentView(framelayout);
        }
    }
}

These are the errors that I have:

Caused by: java.lang.NullPointerException
            at com.example.amadey.pre_final_version.LockActivity.lockHomeButton(LockActivity.java:46)
            at com.example.amadey.pre_final_version.LockActivity.onCreate(LockActivity.java:31)
            at android.app.Activity.performCreate(Activity.java:5231)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
            at android.app.ActivityThread.access$800(ActivityThread.java:135)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:136)
            at android.app.ActivityThread.main(ActivityThread.java:5001)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:515)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
            at dalvik.system.NativeStart.main(Native Method) 
Benjamin W.
  • 46,058
  • 19
  • 106
  • 116
Steve
  • 49
  • 1
  • 7

1 Answers1

2

i think you must be trying to override your home button in android application. try this code in your android activity.

    @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_HOME)) {
        Toast.makeText(this, "You pressed the home button!", Toast.LENGTH_LONG).show();                     
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

here you can don anything when you press the home button when you are in the same activity where this code is placed.

check this only the home method is not overriding.

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_HOME)) {
            Log.i("home pressed", String.valueOf(keyCode));
            return true;
        }
        if ((keyCode == KeyEvent.KEYCODE_BACK)) {
              Log.i("back pressed", String.valueOf(keyCode));
            return true;
        }
        if ((keyCode == KeyEvent.KEYCODE_MENU)) {
            Log.i("menu pressed", String.valueOf(keyCode));
            return true;
        }
        return false;
    }
Ankush Bist
  • 1,862
  • 1
  • 15
  • 32