Android Studio WebView获取数据和实现



我有一个拥有WebView的Android活动,并且我有一个包含局部变量marks的页面。当用户获得正确的答案时,本地变量将增加。在网页中,有一个称为exit的按钮,该按钮应该关闭网页并返回Android中的活动,并且它也应将局部变量marks带回活动。我想询问如何在网页中完成"退出"按钮以关闭页面并使用JavaScript返回本地变量,以及Android中的活动如何从网页中接收本地变量。

我在Android中的活动:

private WebView webview;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.activity_main);
    webview = new WebView(this);
    webview.getSettings().setJavaScriptEnabled(true);
    try {
        webview.setWebViewClient(new WebViewClient());
        webview.loadUrl("file:///android_asset/index.html");
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }
    setContentView(webview);
}

我的退出按钮是DIV:

<div class="exit" onclick="finish()">Exit</div>

我将使用finish()函数返回变量并关闭网页回到Android中的活动。

function finish() {}

通知主机应用程序已完成加载。然后致电onPageFinished()

webview.setWebViewClient(new WebViewClient() {
   public void onPageFinished(WebView view, String url) {
        // do your stuff here
    }
});

您可以做一件事..在出口呼叫的任何网址中WebView。在活动中

 webView.setWebViewClient(new WebViewClient() {
   public void onPageFinished(WebView view, String url) {
        // parse the url here to get marks
    }
});

在OnCreate中注册WebView的JavaScriptInterface:

this.webview.addJavascriptInterface(new MyJSInterface(this), "Android"); 

在您的活动中实现setCount方法:

public void setCount (int count) {
    //do what ever you want with count
}

使新的JavaScriptInterface类:

public class MyJSInterface {
    private YourActivity yourActivity = null;
    public MyJSInterface (YourActivity yourActivity) {
        this.yourActivity = yourActivity;
    }
    @JavascriptInterface
    public void invoke (int count)  {
          this.yourActivity.setCount(count);
    }
}

和javaScript:

function finish(marks) {
    if (Android !== undefined) {
        if (Android.invoke !== undefined)  {
            Android.invoke(marks);
        }
    }
}

最新更新