如何防止Android或React-Native应用程序中的截屏

4

如何在React-Native应用中防止用户截屏?一些评论中说这行代码可以防止截屏,但我应该在哪里插入它呢?

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

如果有其他方式,请告诉我。

注:我只对 Android 平台感兴趣。

1个回答

4
您需要将其插入到MainActivity.java中,在您的MainActivity.java中重写onCreate方法。
package com.reactnativepreventscreenshot;

import android.os.Bundle;
import android.view.WindowManager;

import com.facebook.react.ReactActivity;

public class MainActivity extends ReactActivity {

    /**
     * Returns the name of the main component registered from JavaScript.
     * This is used to schedule rendering of the component.
     */
    @Override
    protected String getMainComponentName() {
        return "reactnativepreventscreenshot";
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
    }
}

DEMO


我不明白为什么每个人都说这应该在MainActivity.java中,而实际上MainApplication.java有onCreate()方法。那么我需要把它插入到MainApplication.java中对吗? - user11558118
出现错误:`Execution failed for task ':app:compileDebugJavaWithJavac'。
编译失败;请参阅编译器错误输出以获取详细信息。`
- user11558118
你有任何想法为什么它会失败吗? - user11558118
为什么是MainActivity.java?OnCreate()在MainApplication.java中。 - user11558118
1
getWindow 方法可以在 MainActivity 中调用,但无法在 ReactApplication 中使用。 - Junius L
这个方法可行,非常感谢!请点赞我的问题,这样更多的人就能找到它了。 - user11558118

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接