Android Studio получает переменную Javascript из Javacode - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь получить переменную Javascript в веб-представлении, чтобы использовать ее в нативном коде Java. Я пробовал разные способы, чтобы достичь этого, но, к сожалению, всегда возникает одна и та же проблема. Я прочитал в документации по Android, что webview.loadURL () работает асинхронно. Это означает, что WebView работает в своем собственном потоке. Что происходит, так это то, что UI-поток будет работать дальше в коде Java и ничего не будет возвращен, потому что WebView-Thread все еще работает. Блокировка UI-потока не работает, потому что тогда поток WebView также будет заблокирован ( прочитайте здесь ).

Поэтому я попробовал способ, которым документация показала мне, и в итоге получил это:

String getJavascriptVariable(final String command) {
    this.webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
                webView.evaluateJavascript(command + ";", new ValueCallback<String>() {
                    @Override
                    public void onReceiveValue(String s){tempVar = s;}
                });
            }
        }
    });
    return tempVar;
}

tempVar является статической переменной в том же классе. Но он не вернет значение переменной Javascript в класс MainActivity. Так что мне делать?

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