如何禁用活动中的主页按钮单击 - 就像在锁屏应用程序中一样?

Posted

技术标签:

【中文标题】如何禁用活动中的主页按钮单击 - 就像在锁屏应用程序中一样?【英文标题】:How to disable Home Button Click in an Activity - like in Lockscreen Apps? 【发布时间】:2020-09-04 15:22:01 【问题描述】:

我需要开发一个锁屏应用程序。我已经设置了前台服务,包括一个监听屏幕关闭事件的广播接收器。

现在我被主页按钮困住了。 我知道 Google Play Store 上有几个锁屏应用程序,它们都可以工作。当按下虚拟主页按钮时,它显示它被按下,但没有任何反应。

我已经环顾四周并尝试了一些事情:

使用 TYPE_KEYGUARD 不起作用(已弃用) 尝试使用 OnKeyDown 捕捉主页按钮的点击也无济于事 尝试覆盖对话框以锁定活动会导致以下错误:

无法添加窗口 android.view.ViewRootImpl$W@e68931b -- 窗口类型 2010 的权限被拒绝

(即使我在清单中设置了 android.permission.SYSTEM_ALERT_WINDOW)。

我还尝试使用锁定任务(屏幕固定)。它可以工作,但它会显示一条消息,即按住后退和最近按钮时可以禁用锁定。

有没有办法让锁定任务只能从应用程序本身停用? Play 商店中的锁屏应用程序如何锁定主页按钮按下?

【问题讨论】:

【参考方案1】:

我自己想出来的。 App Store 中的锁屏应用程序不会禁用主页按钮。他们确实使用了系统覆盖窗口,即使按下按钮也会隐藏主屏幕。当我尝试将 TYPE_SYSTEM_ERROR 用于覆盖时,导致错误。对于较新的 API 版本,TYPE_APPLICATION_OVERLAY 有效

【讨论】:

以上是关于如何禁用活动中的主页按钮单击 - 就像在锁屏应用程序中一样?的主要内容,如果未能解决你的问题,请参考以下文章

Windows技巧|如何在Windows 10在锁屏状态下打开某种应用程序?

如何在android中的活动开始时禁用按钮的单击事件检查

Win10锁屏时的应用推荐和广告怎么关闭

Win10锁屏时的应用推荐和广告怎么关闭

活动之间显示锁屏

禁用单击 Jquery Toggle 按钮中的选定状态