Ich habe eine Warnung von Google Play Console erhalten, die mich auf diese Seite verweist, da ich in meiner App JavaScript-Schnittstelle verwendet habe und zwei Möglichkeiten zur Lösung des Problems vorschlage.
Option 1 sagt:
Stellen Sie sicher, dass der JavaScript-Schnittstelle von .__ keine Objekte hinzugefügt werden. jede WebView, die nicht vertrauenswürdige Webinhalte lädt. Sie können dies auf zwei Arten tun. Wege:
Stellen Sie sicher, dass der JavaScript-Schnittstelle niemals Objekte hinzugefügt werden über Aufrufe von addJavascriptInterface.
Entfernen Sie Objekte aus der JavaScript-Schnittstelle in shouldInterceptRequest via removeJavascriptInterface, bevor nicht vertrauenswürdiger Inhalt von .__ geladen wird. die WebView.
aber ich kann nicht verstehen, was google genau sagt:
Entfernen Sie Objekte aus der JavaScript-Schnittstelle in shouldInterceptRequest via removeJavascriptInterface, bevor nicht vertrauenswürdiger Inhalt von .__ geladen wird. die WebView
kann mir jemand mehr erklären?
Ich habe gerade ein Update veröffentlicht, ohne etwas Besonderes zu tun, und die Warnung ist verschwunden, ABER nicht sicher, ob es zurückkommt oder nicht
Sie können dieses Problem auf folgende Weise beheben:
Nun kommen Sie zu Ihrer Frage zu " Entfernen Sie Objekte aus der JavaScript-Schnittstelle in shouldInterceptRequest über removeJavascriptInterface, bevor nicht vertrauenswürdiger Inhalt vom WebView geladen wird ": Dies bedeutet, dass Ihre App JavaScriptInterface entfernen (oder deaktivieren) muss, wenn kein HTTPS vorhanden ist Die URL wird in die WebView geladen.
Nachdem Sie diese Schritte ausgeführt haben, müssen Sie APK auf der Play Console aktualisieren.
Fazit: Wenn Sie JavaScriptInterface verwenden möchten, sollten Sie HTTPS besser auf Ihrer Website verwenden. Wenn Sie HTTP verwenden, wird JavaScriptInterface von Google Play nicht zugelassen.
Ich hatte das gleiche Problem und konnte das auch nicht herausfinden. Was funktionierte für mich, dokumentiert in Wie gehe ich vor "Beseitigung von Sicherheitsanfälligkeiten bei der JavaScript-Schnittstelleninjektion"? , war WebView.evaluateJavascript zu verwenden. Leider ist dies kein vollständiger Ersatz für alle Anwendungsfälle von JavascriptInterface, aber möglicherweise reicht es für Ihre Zwecke aus.