如何在本机应用程序中禁用屏幕快照?

时间:2018-07-17 13:02:53

标签: android android-studio react-native react-native-android

我已经使用react-native制作了一个移动应用程序(目前仅适用于android,它不是expo应用程序),并且我想禁止用户在该应用程序打开时进行屏幕截图。我知道不可能完全禁用此功能,但我想至少要更难截取屏幕截图。我发现了一些示例,但是我不知道如何实现它们,例如:

How to prevent Screen Capture in Android

我试图放:

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

在我的app_name/android/app/src/main/java/com/app_name/MainApplication.java文件中的onCreate()方法中,然后我无法编译该应用程序以查看其是否有效。同样,当我尝试创建像这样的类时:

How do I prevent Android taking a screenshot when my app goes to the background?

此问题有一些npm -s,但我在安装/使用它们方面也没有成功。

有人知道如何设置标记,以便我的react-native(android)应用程序的用户在使用该应用程序时无法进行屏幕快照吗?

编辑

添加时遇到的错误:getWindow()。setFlags(WindowManager ...,然后在android-studtion中按Build: 错误:软件包WindowManager不存在

,我也尝试过此软件包:

纱线添加反应本机反截屏 纱线添加v1.7.0 [1/4]解决包裹... 错误发生意外错误:“ https://registry.yarnpkg.com/react-native-anti-screenshot:未找到”。 信息如果您认为这是一个错误,请使用“ /home/mislav/workspace2/umye/yarn-error.log”中提供的信息打开错误报告。 信息请访问https://yarnpkg.com/en/docs/cli/add,以获取有关此命令的文档。

好像没有简单的解决方案来禁用屏幕截图,或者我错过了什么吗?

我在开发移动应用程序方面还很陌生,所以请您帮我尽可能简单地解释一下。

谢谢!

1 个答案:

答案 0 :(得分:0)

在MainActivity.java文件中尝试以下代码:

  @Override
  protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
    if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) 
    {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, 
        WindowManager.LayoutParams.FLAG_SECURE);
    };

 }