2016-05-03 9 views
2

Ich versuche zu verhindern, einen Screenshot in CrossWalk WebView zu machen. Ich habe versucht PrivacyScreenPlugin. Dieses Plugin funktioniert sehr gut, wenn ich das Crosswalk Plugin nicht benutzt habe. Wenn ich jedoch das Crosswalk-Plugin hinzugefügt habe, funktioniert es nur zum Zeitpunkt des Starts der App.
Zum Beispiel, wenn ich meine App starte, kann ich keinen Screenshot machen. Wenn ich jedoch eine andere UI-Komponente (z. B. Lautstärkeregelung usw.) zeige, beginnt meine App, einen Screenshot aufzunehmen.Wie verhindert man, dass ein Benutzer einen Screenshot in Android Crosswalk WebView erstellt?

Ich fand this verwandte Frage und eine Person erwähnt, dass, wenn ich Crosswalk verwenden, muss ich PrivacyScreenPlugin/Crosswalk ändern.

Hier ist, was ich versucht habe:
In CrossWalk WebView-Plugin, XWalkWebViewEngine # Init-Methode.

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

Allerdings war der obige Code nicht beheben mein Problem.
Und ich konnte keinen Platz zum Ändern in PrivacyScreenPlugin finden.

Ich folge Android-Versionen und Plugins:

  • Android 5.0.2
  • Plugin 1.6.1 Crosswalk
  • PrivacyScreenPlugin 0.2.0

Jeder Kommentar würde geschätzt .

Antwort

2

Nach this Ticket. Es gibt eine temporäre Problemumgehung, um dieses Problem zu vermeiden.

In AndroidManifest.xml:
ersetzen

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

mit

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

+1

Leider hat das Crosswalk-Team es 'Resolved' mit der Auflösung' Will not Fix' markiert, so dass die Problemumgehung nicht mehr so ​​temporär ist :-(Mindestens funktioniert diese Lösung immer noch als von Crosswalk 22. – rob3c

+0

Da Crosswalk ab der Version 23 nicht mehr gepflegt wird, ist dies nun auch die einzige Problemlösung zur Vermeidung von Screenshots. – Fugue

0

Diese Problemumgehung funktionierte für mich. Es gräbt im Wesentlichen auf die Surface die XWalkView und macht es sicher:

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

Sieht hässlich, aber wie ein Charme.

Verwandte Themen