Application prevents taking screenshots
应用程序阻止截屏
描述
应用程序以编程方式阻止了截屏,这阻碍了 AI Monkey Tester(Ostorlab 的自动化移动爬虫)计算覆盖率。
Android 应用程序可以通过编程方式阻止截屏:
- 使用
FLAG_SECURE窗口标志:
通过设置 FLAG_SECURE 窗口标志,您可以防止应用程序窗口的内容出现在截屏中或在不安全的显示器上查看。
要设置 FLAG_SECURE 窗口标志,您可以在 Window 对象上调用 setFlags() 并传入 FLAG_SECURE 标志。例如:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
请注意,这也将防止您的应用程序窗口内容被录屏应用录制。
- 使用
MediaProjectionAPI:
MediaProjection API 允许您实时捕获设备屏幕的内容。通过使用此 API,您可以通过在用户尝试截屏时简单地不启动屏幕捕获会话来以编程方式阻止截屏。
要使用 MediaProjection API,您将需要根据用例请求 CAPTURE_SCREENSHOT 或 CAPTURE_VIDEO_OUTPUT 权限。然后,您可以创建一个 MediaProjection 对象并调用 start() 来开始屏幕捕获会话。
MediaProjectionManager mediaProjectionManager =
(MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
Intent permissionIntent = mediaProjectionManager.createScreenCaptureIntent();
startActivityForResult(permissionIntent, REQUEST_SCREENSHOT);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_SCREENSHOT) {
if (resultCode == RESULT_OK) {
// Start the screen capture session
MediaProjection mediaProjection = mediaProjectionManager.getMediaProjection(resultCode, data);
mediaProjection.start();
}
}
}
然后,您可以通过调用 MediaProjection 对象上的 stop() 来停止屏幕捕获会话。
- 使用
MediaProjectionManagerAPI:
MediaProjectionManager API 提供了一个系统服务,允许您管理屏幕捕获会话。您可以使用此 API,在允许用户截屏之前检查屏幕捕获会话是否处于活动状态,从而以编程方式阻止截屏。
要使用 MediaProjectionManager API,您可以调用 isProjectionActive() 来检查屏幕捕获会话当前是否处于活动状态。如果屏幕捕获会话处于活动状态,您可以阻止用户截屏。
MediaProjectionManager mediaProjectionManager =
(MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
if (mediaProjectionManager.isProjectionActive()) {
// A screen capture session is active, so prevent the user from taking a screenshot
} else {
// A screen capture session is not active, so allow the user to take a screenshot
}
建议
此条目仅供参考,无适用建议。
链接
标准
- OWASP_MASVS_L1:
- MSTG_PLATFORM_4
- OWASP_MASVS_L2:
- MSTG_PLATFORM_4
- OWASP_MASVS_v2_1:
- MASVS_PLATFORM_1
- HIPAA_CONTROLS:
- SECURITY212
- SECURITY215