如何防止flutter应用程序中的屏幕截图和屏幕录制

时间:2021-02-24 12:42:42

标签: android ios swift flutter

我想阻止用户截屏和录屏,我尝试为 android 和 ios 添加本机代码,对于 android 它完美地工作但对于 ios 它不起作用。

3 个答案:

答案 0 :(得分:0)

在 MainActivity.java 上添加一行

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);

答案 1 :(得分:0)

在 Flutter 中,没有这样的公共 API 可以阻止您截取屏幕截图以及您在问题中已经提到的原因,原生 Android 可以完美运行,但原生 iOS 没有,因为 iOS 没有提供任何此类公共可以限制用户截取屏幕截图的 API。

虽然有一种方法可以通知您已截取屏幕截图。您可以查看 UIApplicationUserDidTakeScreenshotNotification,但将在截取屏幕截图后之后发布通知。

答案 2 :(得分:-1)

最简单的方法是使用名为 flutter_windowmanager

的 flutter 包
Future<void> secureScreen() async {
await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE); 
}

@override
 void initState() {
 secureScreen();
 super.initState();
}

如果您想禁用整个应用屏幕截图,只需在 main.dart 文件中的 main() 函数中调用 securescreen() 方法(如上定义)。

注意:由于 flutter_windowmanager 仅包装和公开底层 Android 特定的接口,因此没有计划或可能的 iOS 支持。对于那些对跨平台 FLAG_SECURE 功能感兴趣的人,此功能已在第三方 secure_application plugin 中重新创建。

相关问题