Можно ли вызвать javascript функцию в android? - PullRequest
1 голос
/ 13 января 2020

Я знаю, что могу выполнять функции в android и вызывать их через javascript, но я не знаю, возможно ли вызвать javascript функции внутри android (java).

Например, у меня есть небольшое приложение в android, которое открывает веб-просмотр и внутри сайта, который я хочу, , когда пользователь нажимает кнопку «Назад» на устройстве , вызов веб-просмотра javascript функция для go возврата к последнему действию (сайта), и если у него нет действия, оно закрывает приложение вместо из going to main activity.

Я знаю, что могу использовать что-то вроде:

@Override
public void onBackPressed() {
   if (mWebView.canGoBack()) {
       mWebView.goBack();
   } else {
       finish();
   }
}

, но в моем случае это не работает, и мне нужно позвонить js function.

Кто-то может помочь?

Ответы [ 2 ]

3 голосов
/ 13 января 2020

Полагаю, вы можете использовать

WebView webView = (WebView) findViewById(R.id.webview);
webView.setWebChromeClient(new MyCustomChromeClient(this));
webView.getSettings().setJavaScriptEnabled(true);
webView.evaluateJavascript("globalJavascriptFunction();", null);

https://developer.android.com/reference/android/webkit/WebView#evaluateJavascript (java .lang.String,% 20 android .webkit.ValueCallback% 3 Cjava. lang.String% 3E)

Вторым аргументом является обратный вызов.


[edit]

Чтобы получить значение из javascript , вы можете сделать что-то вроде этого:

webView.evaluateJavascript("globalJavascriptFunction();", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String result) { 
       // result is the return value of globalJavascriptFunction()
       // you'll have to do some testing inside here to figure out exactly how result gets sent back for your usecase
    }
});
2 голосов
/ 13 января 2020

Возможно, чего-то не хватает ... Go через код ниже ...

WebView webView = (WebView) findViewById(R.id.webview);
webView.setWebChromeClient(new MyCustomChromeClient(this));
webView.setWebViewClient(new MyCustomWebViewClient(this));
webView.clearCache(true);
webView.clearHistory();
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);

...

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (event.getAction() == KeyEvent.ACTION_DOWN) {
        switch (keyCode) {
            case KeyEvent.KEYCODE_BACK:
                if (mWebView.canGoBack()) {
                    mWebView.goBack();
                } else {
                    finish();
                }
                return true;
        }

    }
    return super.onKeyDown(keyCode, event);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...