【问题标题】:how to prevent screenshot and screen recording in flutter app [duplicate]如何防止颤动应用程序中的屏幕截图和屏幕录制[重复]
【发布时间】:2021-05-26 18:56:25
【问题描述】:

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

【问题讨论】:

  • 重复是错误的,因为这个问题是iOS问题。 [android] 标签可能会让人们感到困惑。如果您需要帮助调试您的代码为什么不起作用,您可以发布代码。

标签: android ios swift flutter


【解决方案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 中重新创建。

【讨论】:

  • 问题是如何防止用户截图。 #secure_application 插件无法实现此目的。
  • @UsamaAltaf 这个答案,以及原来的问题似乎只是重复,你可以标记这个答案和问题本身
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    在 MainActivity.java 上添加一行

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

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 2023-03-16
      • 2011-05-08
      • 1970-01-01
      • 2019-05-07
      相关资源
      最近更新 更多