当前位置: 首页 > 知识库问答 >
问题:

在android中禁用特定activity的home键

印高阳
2023-03-14

是否可以在应用程序中禁用特定activity的home键,就像我试过
设置为默认启动程序一样,但在所有activity中,home键将被设置为默认启动程序,而不是我只需要禁用特定activity的home键。有谁能帮我一下吗?

共有1个答案

戈嘉慕
2023-03-14

好吧,我有办法了。创建自定义类

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

然后使用两个utiles方法进行锁定和解锁。

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;
    }
}
 类似资料:
  • 我在Android应用程序,涉及连接一个特定的WiFi SSID没有密码。每当用户进入应用程序时,应用程序都会通过BLE检测特定的信标。之后,该应用程序尝试使用WifiManager连接应用程序代码中编程的WiFi。在这里,我面临一些问题: 1)如果WiFi已经禁用在手机-应用程序启用WiFi并尝试连接到已经配置的WiFi(可能是字母顺序)。在这种情况下,它可能会连接另一个可用的WiFi,并在手机

  • 问题内容: 我试图禁用pickerView中的特定行。 我有一个用于pickerView的字符串数组。当用户选择特定的行时,我将值追加到array1中。 之后,如果array1具有array的值,则当用户再次打开pickerView时,我想这样做,应该禁用pickerView的值。 我怎样才能做到这一点? 问题答案: 选项1:禁用元素 您可以使用pickerView:attributedTitle

  • 问题内容: 我正在android studio中构建一个登录样式的应用程序。作为此过程的一部分,我创建了一个规则,如果用于监视无效登录尝试次数的计数器变为0。我目前知道,当计数器变为0时,将禁用登录按钮。我想知道是否有某种方式可以在设定的时间内(而不是无限期)禁用此按钮? 问题答案: 使用以下代码。当您将活动或片段放在OnCreate()方法中时,它将在5秒钟后禁用按钮。

  • 本文向大家介绍Activity在有Dialog时按Home键的生命周期?相关面试题,主要包含被问及Activity在有Dialog时按Home键的生命周期?时的应答技巧和注意事项,需要的朋友参考一下 当我们的Activity上弹出Dialog对话框时,程序的生命周期依然是onCreate() ---> onStart() ---> onResume(),在弹出Dialog的时候并没有onPause

  • 我想在查看页面2中禁用从右向左滑动。我基本上有一个viewpager2元素,在导航抽屉中有两页。我希望我的第二页仅在单击第一页中的某个元素时显示(从第一页向右向左滑动不应打开第二页),而当我在第二页时,viewpager2滑动(从左向右滑动)应像在viewpager中一样滑动。 我尝试过扩展类并覆盖触摸事件,但不幸的是它是最终类,因此我无法扩展它。 其次,我尝试使用将userinputened设置

  • 我想禁用这个- 在一些用户操作之后,我想启用它。 我试过用- 我不知道上面的代码到底在哪里写。我在闪屏的oncreate中设置了这段代码,但是得到的错误是- 无法启动活动ComponentInfo java.lang.SecurityException:试图更改组件状态; 因此,我在SplashScreen之后打开的MainActivity的oncreate()中调用代码- 2019-10-06