【发布时间】:2017-02-24 02:19:41
【问题描述】:
在某些设备中,当屏幕覆盖应用程序正在运行时,单击 vpn 权限确定按钮时没有任何动作。 所以我想检查屏幕覆盖应用程序是否正在运行,并制作“检测到屏幕覆盖”对话框。
有没有办法在android中以编程方式检测屏幕覆盖?
【问题讨论】:
标签: android
在某些设备中,当屏幕覆盖应用程序正在运行时,单击 vpn 权限确定按钮时没有任何动作。 所以我想检查屏幕覆盖应用程序是否正在运行,并制作“检测到屏幕覆盖”对话框。
有没有办法在android中以编程方式检测屏幕覆盖?
【问题讨论】:
标签: android
示例代码
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
【讨论】:
使用 Lint(在菜单上转到分析 > 检查代码...)。如果您的项目上有任何屏幕覆盖,它会告诉您。
【讨论】: