Android webview获取当前网址并检查其是否包含字符串

时间:2017-02-22 16:28:11

标签: javascript android html webview

上一篇文章来自android studio webview get data and onfinish。我实际上无法从那些答案中得到我想要的东西。也许我应该更清楚地问它。我实际上使用webview来加载内容页面。然后在内容页面中,有一些链接也是我自己创建的本地html。所以流程就像

android活动 - > webview - >内容页面 - >游戏页面。

我实际上想要在游戏页面中检索本地变量marks。所以我创建了一个exit按钮,用于关闭页面并返回到android活动,并将marks带回到android活动。

所以我自己搜索了一些信息,发现window.close()没有用。所以我更改了当前的URL以指示单击了退出按钮。然后从URL中提取marks并将其存储在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.loadUrl("file:///android_asset/index.html");
        webview.setWebViewClient(new WebViewClient()

        @Override 
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {
           if (url.contains("?marks=")){
             finish();}  // close activity
           else{
             view.loadUrl(url);}

           return true; 
        });
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }
    setContentView(webview);
}

我的退出按钮是div:

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

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

function finish() {
  document.location.href= window.location.href +"?marks=" + marks;
}

1 个答案:

答案 0 :(得分:0)

好的,我认为问题已经解决了,因为webview.loadUrl应放在最后。         webview.setWebViewClient(新的WebViewClient()

    webview.setWebViewClient(new WebViewClient()

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
       if (url.contains("?marks=")){
         finish();}  // close activity
       else{
         view.loadUrl(url);}

       return true; 
    });

    webview.loadUrl("file:///android_asset/index.html");