如何防止用户在 Android Crosswalk WebView 中截屏?

How to prevent a user from taking a screenshot in Android Crosswalk WebView?

我试图阻止在 Crosswalk WebView 中截取屏幕截图。我试过了PrivacyScreenPlugin。当我不使用 Crosswalk 插件时,这个插件工作得很好。但是,如果我添加了 Crosswalk 插件,它仅在应用程序启动时有效。
例如,当我启动我的应用程序时,我无法截屏。但是,如果我显示任何其他 UI 组件(例如音量控制等),我的应用程序将开始允许截屏。

我找到了this个相关问题,有人提到如果我使用Crosswalk,我需要修改PrivacyScreenPlugin/Crosswalk。

这是我尝试过的:
在 Crosswalk WebView 插件中,XwalkWebViewEngine#init 方法。

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

但是,上面的代码并没有解决我的问题。
而且,我在PrivacyScreenPlugin里面找不到修改的地方。

我正在使用以下 Android 版本和插件:

如有任何意见,我们将不胜感激。

根据this票。有一个临时解决方法可以避免此问题。

在AndroidManifest.xml中:
替换

android:theme="@android:style/Theme.Black.NoTitleBar"

android:theme="@android:style/Theme.Holo.Light.NoActionBar"

这个解决方法对我有用。它基本上深入到 XWalkView 创建的 SurfaceView 并使其安全:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
    ((SurfaceView)((FrameLayout)((FrameLayout) mXWalkView.getChildAt(0)).getChildAt(0)).getChildAt(0)).setSecure(true);
}

长得丑但工作起来很有魅力。