如何在安卓系统中检测屏幕叠加?

3

在某些设备上,当屏幕叠加应用正在运行时,点击VPN权限确定按钮并没有任何作用。

因此,我想要检查屏幕叠加应用是否正在运行,并显示“检测到屏幕叠加”对话框。

在安卓上有没有编程方式来检测屏幕叠加?

2个回答

0

示例代码

public void checkDrawOverlayPermission(Context context) {
    // check if we already  have permission to draw over other apps
    if (Settings.canDrawOverlays(context)) {
        // code
    } else {
        // if not construct intent to request permission
        final Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                Uri.parse("package:" + getPackageName()));
        // request permission via start activity for result
        startActivityForResult(intent, REQUEST_CODE);
    }
}

在onActivityResult中再次检查权限

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // check if received result code
    // is equal our requested code for draw permission
    if (requestCode == REQUEST_CODE) {
        // if so check once again if we have permission
         if (Settings.canDrawOverlays(this)) {
        // continue here - permission was granted

    }
    }
}

如果您想以编程方式处理屏幕叠加检测弹出窗口? 这应该会有所帮助,https://gist.github.com/Aeonitis/2337b1ca652173839395be82db7d05c3


5
我相信最初的问题是要检查一个应用程序是否正在使用覆盖层,而不是当前应用程序是否可以使用覆盖层。 - RiRomain

-3
使用 Lint(在菜单上选择 Analyze > Inspect Code...)。如果您的项目中有任何屏幕叠加,它都会告诉您。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接