我已经使用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,以获取有关此命令的文档。
好像没有简单的解决方案来禁用屏幕截图,或者我错过了什么吗?
我在开发移动应用程序方面还很陌生,所以请您帮我尽可能简单地解释一下。
谢谢!
答案 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);
};
}