首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式检测Android屏幕覆盖

以编程方式检测Android屏幕覆盖
EN

Stack Overflow用户
提问于 2017-05-26 09:04:10
回答 1查看 4.6K关注 0票数 13

有什么方法可以让应用程序:

  1. 检查上面是否存在屏幕覆盖,以及
  2. 找出哪个包名拥有覆盖层?

我知道Android及更高版本能够在权限页面中检测屏幕覆盖,并在检测到屏幕覆盖时拒绝权限更改,但是开发人员能够在应用程序层实现相同的功能吗?

EN

回答 1

Stack Overflow用户

发布于 2019-03-09 10:46:22

当用户触摸您的MotionEvent.FLAG_WINDOW_IS_OBSCURED之一时,您可以通过检查是否有View标志来检测覆盖。

代码语言:javascript
复制
final View.OnTouchListener filterTouchListener = new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // Filter obscured touches by consuming them.
        if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0) {
            if (event.getAction() == MotionEvent.ACTION_UP) {
                Toast.makeText(v.getContext(), "Overlay detected", Toast.LENGTH_SHORT).show();
            }
            return true;
        }
        return false;
    }
};

yourButton.setOnTouchListener(filterTouchListener);

来源:Android M的设置应用程序

然而,我认为不可能检测到哪个应用程序拥有覆盖。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44197671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档