4

如果用户在显示通知时尝试授予权限并且我完全了解覆盖问题是什么,我已经阅读了Android“检测到屏幕覆盖”消息。

我也了解如何请求它以及如何检查我当前正在运行的应用程序是否有权在叠加层上绘制 (!Settings.canDrawOverlays(this))。

我因为我的应用程序而受到责骂,因为每次弹出权限请求时,都会显示叠加层弹出窗口,即使用户允许我的应用程序绘制叠加层,他们也永远无法通过权限屏幕。

经过一番挖掘,问题是一些用户在他们的屏幕上运行了一个录音应用程序:

在此处输入图像描述

问题是,这不是我的应用程序!这是 AZ Screen Recorder (链接),它作为叠加层运行,但由于出现此弹出窗口时它们就在我的应用程序中,因此我被归咎于这个问题。

我想向用户显示一些东西,他们需要检查是否有任何其他应用程序作为覆盖运行,但我不知道如何检查。

我可以检查他们是否能够在我的应用程序中绘制叠加层,但我不知道如何检查其他人。

因此,我的问题是,有没有办法以编程方式检查当前是否有任何应用程序在运行时运行覆盖,如果是,我可以找出所述应用程序的包名称吗?

(PS,我对有问题的屏幕录像机应用程序没有疑虑,我只是想链接到它,以便任何人都可以下载并测试他们是否选择)

4

1 回答 1

0

如果您可以制作一个测试视图并在其上生成一个点击事件,那么对于牛轧糖和奥利奥版本,您可以使用:

view.setOnTouchListener((v, event) -> {
        if ((event.getFlags() & 0x2) != 0) {
            mPresenter.onVideoViewTapped();
            return false;
        }
        return false;
    });

这里 0x2 是 FLAG_WINDOW_IS_PARTIALLY_OBSCURED 的值,根据文档隐藏。

于 2019-07-29T07:22:27.017 回答