Я получил предупреждение от консоли Google Play, которое отсылает меня к эта страница, потому что я использовал интерфейс JavaScript в своем приложении и предлагаю два варианта решения проблемы.
Опция 1 сообщает:
Ensure that there are no objects added to the JavaScript interface of any WebView that loads untrusted web content. You can do this in two ways:
Ensure that no objects are ever added to the JavaScript interface via calls to addJavascriptInterface.
Remove objects from the JavaScript interface in shouldInterceptRequest via removeJavascriptInterface before untrusted content is loaded by the WebView.
но я не могу понять, о чем конкретно говорит Google:
Remove objects from the JavaScript interface in shouldInterceptRequest via removeJavascriptInterface before untrusted content is loaded by the WebView
может кто-нибудь рассказать мне больше объяснений?
если Google не разрешил нам использовать инъекцию, то почему этот метод существует ?!
Обратите внимание, что там написано «для ненадежного веб-содержимого». Если это используется для доверенного содержимого, то этот метод все равно полезен. Вот почему существует метод.
Да, там написано «для ненадежного веб-контента», но как Google узнает, что я использую его для веб-сайта ssl или ненадежного веб-сайта?
Я столкнулся с той же проблемой и тоже не смог понять этого. Что сработало для меня, что описано в Как устранить «Устранение уязвимости, связанной с внедрением в интерфейс JavaScript»?, так это использование WebView.evaluateJavascript. Увы, это не полная замена для всех вариантов использования JavascriptInterface, но, возможно, этого достаточно для ваших целей.
Я просто выпускаю обновление, не делая ничего особенного, и предупреждение исчезло, НО не уверен, что оно вернется снова или нет
Надеюсь, что в своем ответе я объяснил вашу озабоченность, это может помочь.
Вы можете решить эту проблему следующими способами:
Теперь, переходя к вашему вопросу о «Удалите объекты из интерфейса JavaScript в shouldInterceptRequest через removeJavascriptInterface до того, как WebView загрузит ненадежный контент.»: это означает, что ваше приложение должно удалить (или отключить) JavaScriptInterface всякий раз, когда в WebView загружается какой-либо URL-адрес, отличный от HTTPS.
После выполнения любого из этих действий вам необходимо обновить APK в Play Console.
Вывод состоит в том, что если вы хотите использовать JavaScriptInterface, лучше используйте HTTPS на своем веб-сайте. Если вы используете HTTP, JavaScriptInterface не будет разрешен в Google Play.
Я считаю, что это говорит о том, что вы должны удалить все, что вы добавили, перед посещением сайта http (в отличие от сайта https). А еще лучше - не использовать никаких инъекций.