Java 以编程方式检测应用程序覆盖和屏幕过滤器

Java 以编程方式检测应用程序覆盖和屏幕过滤器,java,android,android-7.0-nougat,Java,Android,Android 7.0 Nougat,当您的应用程序以编程方式打开时,是否有任何方法可以检测是否有任何其他应用程序覆盖您的应用程序(如屏幕过滤器)?我希望能够检测到它们,以便通知用户在我的应用程序中关闭它们 我想做的一件事是使用类似于此解决方案的方法,即使用ActivityManager方法来检测当前的前台应用程序/服务,并查看它是否不是我的应用程序包,或者是否可能查找我知道会导致此问题的某些包 然而,这种方法涉及到对棒棒糖、棒棒糖、安卓M的各种适应,目前不适用于安卓N——我实现的解决方案必须适用于安卓N。我也不确定屏幕过滤器之类的

当您的应用程序以编程方式打开时,是否有任何方法可以检测是否有任何其他应用程序覆盖您的应用程序(如屏幕过滤器)?我希望能够检测到它们,以便通知用户在我的应用程序中关闭它们

我想做的一件事是使用类似于此解决方案的方法,即使用
ActivityManager
方法来检测当前的前台应用程序/服务,并查看它是否不是我的应用程序包,或者是否可能查找我知道会导致此问题的某些包


然而,这种方法涉及到对棒棒糖、棒棒糖、安卓M的各种适应,目前不适用于安卓N——我实现的解决方案必须适用于安卓N。我也不确定屏幕过滤器之类的东西在状态方面会落在哪里

“它使用ActivityManager方法检测当前的前台应用程序/服务”--首先,可能有许多前台应用程序/服务,其中任何一个都不一定代表你的应用程序。甚至“你的应用程序”的概念在多窗口环境(Chrome OS,未来的Android freeform多窗口设备)中也会有问题@commonware:暂时忘记多窗口环境,你对“画图”有什么建议吗“案例?据我所知,没有可靠的方法检测应用程序上的活动绘图,出于隐私和安全原因,所有可靠检测其他正在运行的应用程序的方法现在都应该被打破。您可以确定哪些应用程序请求了
SYSTEM\u ALERT\u WINDOW
权限,但仅此而已。@commonware:谢谢您的建议,我会研究一下:)FWIW,每当安装或更新应用程序并且该应用程序请求
SYSTEM\u ALERT\u WINDOW
时,就会发出
通知。