简体   繁体   English

无法禁用主页按钮

[英]Unable to disable Home Button

I am trying to disable home button but getting an error that I don't understand.I have tried many code to disable Home Button but did not got success.我正在尝试禁用主页按钮但收到一个我不明白的错误。我尝试了许多代码来禁用主页按钮但没有成功。 This code seems to be better but this error crashes my application.此代码似乎更好,但此错误使我的应用程序崩溃。 As my application opens and goes to InputPassword Activity it crashes.当我的应用程序打开并进入 InputPassword Activity 时,它崩溃了。 My homeLockKey code is as follows:我的 homeLockKey 代码如下:

public class HomeKeyLocker {
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);
    }
}

My activity is:我的活动是:

public class InputPassword extends AppCompatActivity {
  HomeKeyLocker homeKeyLocker;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_input_password);

    homeKeyLocker = new HomeKeyLocker();
    homeKeyLocker.lock(this);
     }
    }

My logcat is:我的日志是:

    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rutabaazmat.lockpattern/com.example.rutabaazmat.lockpattern.InputPassword}: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@1abfe808 -- permission denied for this window type
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2521)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2595)
    at android.app.ActivityThread.access$800(ActivityThread.java:178)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1470)
    at android.os.Handler.dispatchMessage(Handler.java:111)
    at android.os.Looper.loop(Looper.java:194)
    at android.app.ActivityThread.main(ActivityThread.java:5631)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:372)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:959)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
 Caused by: android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@1abfe808 -- permission denied for this window type
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:704)
    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:289)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
    at android.app.Dialog.show(Dialog.java:311)
    at com.example.rutabaazmat.lockpattern.HomeKeyLocker.lock(HomeKeyLocker.java:27)
    at com.example.rutabaazmat.lockpattern.InputPassword.onCreate(InputPassword.java:39)
    at android.app.Activity.performCreate(Activity.java:6092)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1112)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2468)

Thanks for help in advance:).提前感谢您的帮助:)。

Try using this permission in AndroidManifest.尝试在 AndroidManifest 中使用此权限。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM