You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio下安卓与iOS应用禁用截屏、录屏实现方法

双端防截屏/录屏内容防护实现方案

针对应用内容安全防护的两类核心目标——直接禁用用户端的截屏、录屏触发能力,或者让用户通过截屏、录屏获取到的应用画面为空白无效内容,Android、iOS双端可直接落地的实现方式具体如下:

Android端(基于Android Studio开发场景)

  • 系统层直接拦截截屏、录屏能力
    给需要防护的页面窗口添加安全标志WindowManager.LayoutParams.FLAG_SECURE即可实现:调用getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE)设置后,系统会直接拦截该页面的截屏触发动作,同时在录屏场景下自动将该窗口的捕获内容替换为黑屏,不会暴露真实界面。
    实际开发建议把这个flag的设置逻辑统一抽到所有页面的基类BaseActivity的onCreate方法中,避免遗漏启动页、弹窗、WebView承载的内容页等零散页面,导致防护出现漏洞。
  • 敏感页面按需触发防护逻辑
    如果不需要全局开启防护,可以针对核心敏感页面做定向检测:
    • 截屏检测:通过自定义ContentObserver监听系统媒体库的文件变更,一旦检测到用户刚生成截图文件,立刻将当前页面的敏感内容临时替换为空白提示,避免用户留存有效截图;
    • 录屏检测:Android 12及以上版本可通过DisplayManager注册显示状态回调,一旦检测到外部内容投射(即录屏/投屏状态),立刻触发页面内容降级,清空所有关键信息展示。

iOS端

  • 录屏/投屏场景下实现空白输出
    iOS没有和Android端FLAG_SECURE完全对等的、可以直接禁用截屏/录屏的系统API,但可以通过状态检测实现让用户截取、录制到的画面全为空白的效果:
    核心逻辑是将真实业务内容View和页面展示层做隔离,当检测到系统处于截屏/录屏状态时,临时移除真实内容View,替换为完全空白的占位View,待状态恢复后再切回真实内容:
    • 录屏/投屏状态检测:iOS 10及以上版本可通过系统属性UIScreen.isCaptured判断当前是否处于录屏、AirPlay投屏、外部视频输出状态,属性值为true时立刻触发页面内容替换;
    • 截屏行为检测:监听系统通知UIApplication.userDidTakeScreenshotNotification,一旦收到用户完成截屏的系统通知,立刻临时覆盖全局空白遮罩,同时清空页面的敏感缓存,避免截图留存有效信息。
  • 多任务场景防护补全
    iOS系统在应用切换到后台时,会自动抓取当前页面的画面生成多任务切换的缩略图,需要在应用进入后台的生命周期回调applicationDidEnterBackground中,立刻给页面添加空白遮罩,避免用户在多任务界面看到甚至截取到应用的真实内容。

注意:以上方案均为系统官方提供的能力,不需要申请特殊第三方权限,符合应用商店审核规则;但这类方案仅能覆盖系统层面的截屏、录屏、投屏操作,无法防范用户使用外部实体设备(如另一台手机正对屏幕拍摄)带来的内容泄露风险。


内容的提问来源于stack exchange,提问作者Xeno

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 03:54:05