Как вставить текст в textarea через webview

392
27 октября 2017, 11:33

Есть Webview, он грузит страницу html в которой есть форма с textarea... и есть кнопка..

Нужно чтоб при нажатии на кнопку в textarea вставлялся определенный текст, допустим, слово "Привет".

Как это сделать на java?

И сразу вопрос, как потом весь текст (дописанный пользователем) из textarea "достать", и поместить в String строку?

Answer 1

Чтобы передать что-то со страницы в Java часть необходимо взаимодействия с html страницей настроить.

  1. Включить выполнение JS: webView.getSettings().setJavaScriptEnabled(true);.
  2. Создать класс-интерфейс между Java и JS:

    public class WebViewJavaScriptInterface{
        private Context context;
    
        public WebViewJavaScriptInterface(Context context){
            this.context = context;
        }
        @JavascriptInterface
        public void getText(String message){
            Toast.makeText(context, text, Toast.LENGTH_SHORT).show();
        }
    }
    
  3. Установить связь: webView.addJavascriptInterface(new WebViewJavaScriptInterface(this), "MyJavaHandler");.

  4. Теперь в JavaScript части на странице вы можете вызывать метод getText и он будет обрабатываться в getText методе класса WebViewJavaScriptInterface:

    <script type="text/javascript">
           MyJavaHandler.getText("текст, который вы хотите прокинуть в Java");
    </script>
    

Для передачи из Java в JS:

  1. Определить функцию в JS:

    function callFromActivity(msg){
           // здесь строка, переданная из Java
    }
    
  2. В Java части вызвать webView.loadUrl("javascript:callFromActivity(\"Привет\")");

READ ALSO
Взаимная блокировка процессов [требует правки]

Взаимная блокировка процессов [требует правки]

Ошибка в строке public class javaapplication16 implements Runnable, не пойму в чем соль

310
Работа с потоками. Приостановка потока

Работа с потоками. Приостановка потока

Вообщем, хотелось бы реализовать такое: после того как простое число найдено, поток приостанавливает свою работу и продолжают(потоки) свою...

380
Как создать свой progressbar? [требует правки]

Как создать свой progressbar? [требует правки]

Нужно создать свой круглый progressbar для таймера обратного отсчета в android-приложении

237