Webview - Как вызвать функцию Java из кнопки Javascript - PullRequest
0 голосов
/ 31 октября 2019

Таким образом, у меня возникла проблема, когда есть кнопка, которая будет вызывать функцию веб-просмотра

Это кнопка с идентификатором play в index.html которая вызовет функцию javascript playVideo в src.js , где функция playVideo уведомит веб-сайт о том, что кнопка была нажата для проверки состояния в Java-функция .

Как мне этого добиться?

Ниже приведены коды, помогающие получить контекст

index.html

<!DOCTYPE html>
<html>
<head>
    <title> Video</title>
    <script type="text/javascript" src="src.js"></script>
</head>
<body bgcolor="#333">
<center>
<video preload="auto" width="480" height="270" 
#Embed-video
</video>
<br>
<br>
<div>
<a class="first" href="#" id="play">Play</a>
<a class="second" href="#" id="pause">Pause</a>
</div> 
</center>

код Javascript

window.onload = function(){
  var video = document.getElementById('my-video');
  var play = document.getElementById('play');
  var pause = document.getElementById('pause');

  // associate functions with the 'onclick' events
  play.onclick = playVideo;
  pause.onclick = pauseVideo;

  function playVideo(e) {
    //call java function
  }

  function pauseVideo(e) {

  }
}

Функция Java

 webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(x,y) {
                if (js.playVideo()) {
                    //do something
                    return true;
                }else{
                    return false;
                }
            }
        });

1 Ответ

0 голосов
/ 31 октября 2019

Вы должны использовать аннотацию для Javascript, как в следующем примере

    // Java File example
    @JavascriptInterface
    public void showToast(String toast) {
        Toast.makeText(mContext, "show toast from web: " + toast, Toast.LENGTH_SHORT).show();
    }

    // Js file example
    function showAndroidToast(msg) {
        Android.showToast(msg);
    }

Таким образом, вы должны попробовать, как следующий код.

    function playVideo(e) {
        //call java function
        Android.doSomething();
    }
    webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(x,y) {
                // implment your code with doSomething func here
                if (doSomething()) {
                    //do something
                    return true;
                }else{
                    return false;
                }
            }
        });

    @JavascriptInterface
    public boolean doSomething() {
        // do something
        if(isPlaying) return true;
        return false;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...