Android Webview:如何捕获给定本地URL的点击

时间:2015-09-24 07:09:05

标签: javascript android url webview

我在网页浏览中显示内容。内容从服务器API加载。内容可以包含以下链接:

<a href="#register">Register</a>

如何点击 #register

我可以使用一些HTML解析器并附加onClick事件,但更好更容易将URL更改为 #register

非常感谢任何建议。

修改

我尝试了以下示例,但没有运气

browser = (WebView) view.findViewById(R.id.intro_browser);
        // Set Chrome instead of the standard WebView
        browser.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView  view, String  url){
                Logger.d("TEST");
                return true;
            }

            @Override
            public void onLoadResource(WebView view, String url) {
                Logger.d("URL IS:");
                Logger.d(url);

                if (url.startsWith("app://")) {

                }
            }
        });
        browser.getSettings().setJavaScriptEnabled(true);
        browser.addJavascriptInterface(new WebViewJavaScriptInterface(getContext()),
                Constants.Welcome.JAVASCRIPT_NAMESPACE);
        //browser.getSettings().setAllowFileAccessFromFileURLs(true);
        //browser.getSettings().setAllowUniversalAccessFromFileURLs(true);
        browser.loadData(htmlContent, Constants.Welcome.MIME_TYPE, Constants.Welcome.ENCODING);

2 个答案:

答案 0 :(得分:0)

您需要创建自定义WebViewClient:

public class CustomWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        boolean result = false;
        if (Objects.equal(url, "#register")) {
            result = true;
            //Do what you want here
        }
        return result;
    }
}

然后你需要把它交给WebView:

webView.setWebViewClient(new CustomWebViewClient());

true中返回shouldOverrideUrlLoading表示您在返回false时处理了Url,这意味着WebView应该处理它。

答案 1 :(得分:0)

在清单中添加一个intent过滤器,以便以&#34; yourapp://&#34;开头的链接或类似的东西将启动您的应用程序。

如果您要生成网络内容,请为您的应用生成链接。

<a href="yourapp://register">Register</a>

如果您没有生成内容,请使用webview.load(&#34; javascript://代码将注册链接替换为yourapp://&#34;)。