// 注册屏幕捕获变化通知NotificationCenter.default.addObserver( self, selector: #selector(screenCaptureChanged), name: UIScreen.capturedDidChangeNotification, object: nil)@objc func screenCaptureChanged(notification: NSNotification) { if UIScreen.main.isCaptured { // 屏幕正在被捕获,可以在这里做一些隐藏内容的操作,比如 // 显示一个覆盖所有内容的视图 } else { // 屏幕没有被捕获,可以移除那个覆盖的视图 }}
但需要注意的是,iOS不允许应用程序完全禁止截屏。因为截图功能是系统级别的,而不是应用级别的,上述代码只能做到在截图时采取一定的响应措施,不能完全防止。2. Android系统防止截屏在Android中,可以通过设置Window的属性来防止用户截图或录屏。这通过禁用FLAG_SECURE来实现。java// 在Activity中设置禁止截屏@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 在setContentView之前调用 getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); setContentView(R.layout.activity_main);}
这样设置后,当前的Activity将无法被截屏或录屏。3. HarmonyOS(鸿蒙系统)防止截屏HarmonyOS是华为开发的一个分布式操作系统,目前它在应用开发中有着与Android类似的API。因此可以使用与Android相同的方法进行禁止截屏。java// 在Ability(Activity)中设置禁止截屏@Overrideprotected void onStart(Intent intent) { super.onStart(intent); // 在setUIContent之前调用 getWindow().addFlags(WindowManager.LayoutConfig.FLAG_SECURE); setUIContent(ResourceTable.Layout_ability_main);}
在HarmonyOS中,Ability相当于Android中的Activity。请注意尽管上述方法能够有效地防止绝大多数截屏和录屏行为,但技术上并不是100%无法绕过的(例如某些root设备或具有特殊权限的应用可能可以绕过这些限制)。因此,在处理非常敏感的信息时,请综合其他安全措施一起使用,比如数据加密、用户行为分析等。(图片来源网络,侵删)
0 评论