@Mox
Team Lead, RoR, React/React Native

Почему не работает addJavascriptInterface в Android?

Есть Activity с WebView

webView.getSettings().setJavaScriptEnabled(true);

 webView.addJavascriptInterface(
      new PhotoStorage(this),
      "PhotoStorage"
 );


Внутри WebView есть код ( выполняется после AJAX запроса с данными ), обращающийся к PhotoStorage, и совершенно безрезультатно ( пишет - Uncaught ReferenceError: PhotoStorage is not defined.)

сonsole.log(window.PhotoStorage);
сonsole.log(PhotoStorage);

Соответственно вопрос - что я сделал не так и как правильно использовать JSInterface внутри webview?
  • Вопрос задан
  • 3359 просмотров
Решения вопроса 1
@Mox Автор вопроса
Team Lead, RoR, React/React Native
Вообщем разобрался - при первом же редиректе начиналась работа в стандартном браузере. Лечится добавлением собственного WebView, в котором перекрыт метод shouldOverrideUrlLoading

@Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (
                Uri.parse(url).getHost().contains("sonyagent") ||
                (Uri.parse(url).getPort() == 3000)
            ){
                return false;
            }
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            startActivity(intent);
            return true;
        }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы