【问题标题】:How to detect screen overlay in android?如何检测android中的屏幕覆盖?
【发布时间】:2017-02-24 02:19:41
【问题描述】:

在某些设备中,当屏幕覆盖应用程序正在运行时,单击 vpn 权限确定按钮时没有任何动作。 所以我想检查屏幕覆盖应用程序是否正在运行,并制作“检测到屏幕覆盖”对话框。

有没有办法在android中以编程方式检测屏幕覆盖?

【问题讨论】:

    标签: android


    【解决方案1】:

    示例代码

    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

    【讨论】:

    • 我相信最初的问题是检查一个应用是否正在使用覆盖,而不是当前应用是否可以使用覆盖。
    【解决方案2】:

    使用 Lint(在菜单上转到分析 > 检查代码...)。如果您的项目上有任何屏幕覆盖,它会告诉您。

    【讨论】:

      猜你喜欢
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 2017-01-05
      • 1970-01-01
      • 2017-05-23
      • 1970-01-01
      相关资源
      最近更新 更多