让我先说一下,我已经阅读了Android "Screen Overlay Detected" message if user is trying to grant a permission when a notification is showing,我完全理解了重叠问题是什么。
我也理解如何请求它以及如何检查我当前正在运行的应用程序是否有权在叠加层上绘图(!Settings.canDrawOverlays(this))。
我的应用程序受到了责骂,因为每次弹出权限请求时,都会显示叠加弹出窗口并且即使用户允许我的应用程序绘制叠加层,也无法通过权限屏幕。
经过一番挖掘后,问题是有些用户在他们的屏幕上运行了录制应用程序:
问题是,这不是我的应用程序!这是AZ屏幕录像机(link),它作为叠加层运行,但由于这个弹出窗口出现时它们在我的应用程序中,我被指责为这个问题。
我想向用户展示他们需要检查任何其他正在运行某些内容的应用程序,但我不知道如何检查这一点。
我可以检查他们是否能够在我的应用程序中绘制叠加层,但我不知道如何检查其他人。
我的问题是,有没有办法以编程方式检查是否有当前在运行时运行覆盖的任何应用程序?如果是,我是否可以找到包名称说应用程序?
(PS,我对有问题的屏幕录像机应用没有任何疑虑,我只想链接到它,以便任何人都可以下载并测试他们是否选择)
答案 0 :(得分:0)
如果您可以进行测试视图并在其上生成点击事件,那么对于牛轧糖和奥利奥版本,您可以使用:
view.setOnTouchListener((v, event) -> {
if ((event.getFlags() & 0x2) != 0) {
mPresenter.onVideoViewTapped();
return false;
}
return false;
});
此处0x2是FLAG_WINDOW_IS_PARTIALLY_OBSCURED的值,根据文档隐藏。