一、系统级禁止截屏的方法
1. Android系统
设置限制
进入「设置」→「显示」→「屏幕录制与截图」,关闭「允许屏幕录制」和「允许截屏」选项。
代码实现
在应用中调用 `Window.setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE)`,适用于全屏应用。
2. iOS系统
检测截屏事件
监听 `UIApplicationUserDidTakeScreenshotNotification` 通知,检测到截屏时执行模糊视图或显示警告。
窗口层级调整
通过 `UIApplication.shared.windows.first?.setLevel(UIWindow.LevelAlert, for: .userActivity)` 将应用窗口置于警报级别,部分第三方库(如 `ScreenCapture`)可辅助实现。
二、开发级禁止截屏的方法
1. Android系统
使用DDMS工具
通过ADB命令调用 `adb shell screencap -p /path/to/save` 进行截屏,适用于调试或安全类应用。
代码实现
在关键操作(如支付)中调用 `System.exit(1)` 强制退出应用,避免截屏。
2. iOS系统
检测截屏通知
监听 `UIScreenCapturedDidChangeNotification`,通过 `UIApplication.shared.isCaptured` 判断是否发生截屏,进而采取措施。
自定义视图覆盖
在应用前台时,通过 `UIView` 层叠自定义视图(如半透明遮罩)覆盖屏幕内容。
三、注意事项
系统级限制的局限性 - 部分第三方应用可能通过系统级设置或反射机制绕过限制。
- iOS的屏幕录制权限需在`Info.plist`中声明。
开发级方法的适用场景
- 仅适用于需要严格控制截屏的应用(如金融、医疗类),不建议用于普通应用。
- 代码实现需结合具体业务逻辑。
四、补充说明
物理按键截屏破解: 可通过开启手机「飞行模式」(部分安卓版本)或使用第三方录屏工具(如 `ScreenRecorder`)绕过应用内限制,但这些方法存在安全风险且可能被屏蔽。 安全风险提示