有没有办法让应用程序:
- 检查上面是否有屏幕覆盖,以及
- 找出哪个包名称拥有叠加层?
我知道 Android M 及更高版本能够在权限页面中检测屏幕覆盖,并在检测到屏幕覆盖时拒绝权限更改,但开发人员是否能够在应用层实现相同的功能?
最佳答案
您可以通过检查 MotionEvent.FLAG_WINDOW_IS_OBSCURED
来检测重叠当用户触摸您的 View
之一时标记
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 - 以编程方式检测 Android 屏幕覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44197671/