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

时间:2016-05-03 09:49:52

标签: android cordova crosswalk

我正试图阻止在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版本和插件:

  • Android 5.0.2
  • Crosswalk插件1.6.1
  • PrivacyScreenPlugin 0.2.0

任何评论都将不胜感激。

2 个答案:

答案 0 :(得分:2)

根据a CheckDependencies() method in CefSharp.dll票。有一个临时的解决方法可以避免这个问题。

在AndroidManifest.xml中:
替换

  

机器人:主题=" @android:风格/ Theme.Black.NoTitleBar"

  

机器人:主题=" @android:风格/ Theme.Holo.Light.NoActionBar"

答案 1 :(得分:0)

这个解决方法对我有用。它基本上挖掘了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);
}

看起来很丑,但却像魅力一样。