Как передать возвращаемые значения из функции JavaScript в Android? - PullRequest
12 голосов
/ 10 марта 2011

Я хочу, чтобы мое приложение android вызывало функцию, написанную на javascript , и ожидало возвращаемого значения.

Я понимаю, что WebView.loadUrl работает асинхронно, поэтому сейчас я хочу, чтобы javascript уведомил мое приложение для Android об этом, и передал возвращаемое значение, вызвав функцию java с помощью javascriptinterface .

Интересно, есть ли лучшие способы сделать это и заметил ли кто-нибудь потерю сообщения между javascript и android.

1 Ответ

30 голосов
/ 10 марта 2011

Я только что получил вашу проблему.

У вас есть такая JS-функция.

function androidResponse() {
   window.cpjs.sendToAndroid("I am being sent to Android.");
}

Настройка Android (Java).

Иметь последний класс, подобный этому

final class IJavascriptHandler {
   IJavascriptHandler() {
   }

   // This annotation is required in Jelly Bean and later:
   @JavascriptInterface
   public void sendToAndroid(String text) {
      // this is called from JS with passed value
      Toast t = Toast.makeText(getApplicationContext(), text, 2000);
      t.show();
   }
}

Тогда на вашей загрузке WebView есть.

webView.addJavascriptInterface(new IJavascriptHandler(), "cpjs");

Вызовите функцию JS

webView.loadUrl("javascript:androidResponse();void(0)");

ОБНОВЛЕНО


Также у меня былоочень плохое время, когда возникают проблемы при передаче сотен строк строки в JS из Java, и у меня есть последующая публикация в StackOverflow без хороших ответов, но, наконец, я решил ее, зная, что в строке есть специальные символы, поэтому используйте специальные символы при использовании передачи строкитуда и обратно.

Передача данных из Javascript в Android WebView

HTML-строка внутри вложенной строки

HTMLОграничение символов TextArea внутри Android WebView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...