anti-screenshot (Android + iOS)

anti-screenshot (Android + iOS) 手机防截屏或者虚化,或是模糊处理页面

Android 提供了系统级 API 来禁止当前 Activity 截屏:只对当前 Activity 生效,切换页面需重新设置,无法阻止 root 设备或部分第三方工具的强制截屏。

复制代码
// 在你的 WebView 所在的 Activity 中添加
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 禁止当前窗口截屏和录屏
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
                         WindowManager.LayoutParams.FLAG_SECURE);
    setContentView(R.layout.activity_webview);
}

IOS 没有直接的 "禁止截屏" API,监听截屏事件并做处理

复制代码
// 在 AppDelegate 或 WebView 容器中监听
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(userDidTakeScreenshot:)
                                             name:UIApplicationUserDidTakeScreenshotNotification
                                           object:nil];

- (void)userDidTakeScreenshot:(NSNotification *)notification {
    // 截屏后执行:
    // 1. 提示用户禁止截屏
    // 2. 模糊/隐藏敏感内容
    // 3. 上报风控系统
}

使用 UITextField 遮挡敏感区域(更强限制),利用 iOS 系统对密码输入框的保护特性,将敏感内容包裹在 UITextField 中并设置 secureTextEntry = YES,系统会自动阻止对该区域的截屏和录屏。

H5 辅助防护手段,敏感内容模糊化 :当检测到页面失焦 / 进入后台时,用 filter: blur(8px) 模糊页面核心内容。

复制代码
.sensitive-content {
    transition: filter 0.3s;
}
.blur {
    filter: blur(8px);
}

document.addEventListener('visibilitychange', () => {
    if (document.hidden) {
        document.querySelector('.sensitive-content').classList.add('blur');
    } else {
        document.querySelector('.sensitive-content').classList.remove('blur');
    }
});

在页面上叠加半透明用户水印,即使被截图也能溯源,与原生端通信,上报截屏事件到后台,做行为风控,任何防截屏方案都无法阻止物理拍照、录屏设备(如外接相机)。

相关推荐
麻瓜生活睁不开眼6 小时前
Android16修改全局桌面视图边框四直角显示为弧边圆角
android·java·深度学习
AFinalStone9 小时前
Android 7系统休眠唤醒(六)唤醒全链路
android·电源管理·休眠唤醒
雨白10 小时前
深入理解 Kotlin 协程 (九):互通有无,解构 Channel 缓冲策略与底层无锁机制
android·kotlin
灯塔@kuaidao12 小时前
平台交叉编译名词解释与基础流程
android
__Witheart__13 小时前
3568 Android otg模式下adb热拔插不识别
android·adb·rockchip
明天…ling14 小时前
Upload-Labs (Pass1-Pass21) 完整通关思路与源码分析
android·网络安全·渗透测试·burpsuite·upload-labs·文件上传绕过·靶场复现
__Witheart__14 小时前
3568 Android ntp校时使用
android·rockchip
wddptwd2815 小时前
android studio 报错怎么处理 java.lang.NullPointerException
android·java·android studio
美狐美颜SDK开放平台16 小时前
直播APP开发,美颜SDK和相机SDK有什么区别?
android·深度学习·数码相机·ios·直播美颜sdk·视频美颜sdk
唐诺17 小时前
Android Open Accessory (AOA) 协议完全解析
android·usb·aoa