Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓系统中的锁定主页按钮_Android_Home Button - Fatal编程技术网

Android 安卓系统中的锁定主页按钮

Android 安卓系统中的锁定主页按钮,android,home-button,Android,Home Button,我找到了阻止home按钮的代码,我确实想尝试一下,但是当我运行它时,什么都没有发生,甚至我的布局也没有显示,而且当我转到home屏幕时,我也出现了一个错误(见下面的代码)。我做错了什么 public class LockActivity extends Activity{ private LockscreenUtils mLockscreenUtils; @Override protected void onCreate(Bundle savedInstanceStat

我找到了阻止home按钮的代码,我确实想尝试一下,但是当我运行它时,什么都没有发生,甚至我的布局也没有显示,而且当我转到home屏幕时,我也出现了一个错误(见下面的代码)。我做错了什么

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);
        }
 }
这是我阻止主页按钮的地方:

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);
        }
    }
}
以下是我的错误:

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) 

我想你们一定是想在android应用程序中覆盖你们的主页按钮。 在您的android活动中尝试此代码

    @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);
}
在这里,当您处于放置此代码的同一活动中时,按下“主页”按钮可以执行任何操作

选中此选项仅当home方法未被重写时

@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;
    }

我想阻止home按钮,但不要在键码中返回任意值_HOME@Override公共布尔onKeyDown(int-keyCode,KeyEvent-event){if((keyCode==KeyEvent.keyCode_-HOME)){}但我必须返回true或false,不是吗?好的,我正在尝试。如果我得到一些提示,我将很快通过相同的链接更新您