WebView处理使用Intent.ACTION_VIEW重定向单击链接

时间:2018-02-07 11:07:24

标签: android webview hyperlink click android-webview

我在webview内容上使用Intent.ACTION_VIEW在不同设备上点击了一个难以管理的开放链接。

我的情况是:我在我的应用内webview内显示了一些HTML代码,此内容有一些链接(href),然后在点击事件上我想打开外部应用的链接和不在同一个网页视图中。

我通过以下方式实现了这一目标:

webview.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(request.getUrl().toString()));
        activity.startActivity(intent);    
        return true;
    }
});

所以,问题是这并不会发生在所有设备上。

使用Android 7它可以正常工作,但在版本6上没有。无论如何管理不同的版本我已经使用了不同的实现。

webview.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        activity.startActivity(intent);
        return true;
    }
});

我已经查看了stackoverflow,但唯一的答案是我发现使用上面的代码。

感谢您的支持

更新 - 15/02/18 我已经解决了这个问题,将两个@Override方法放在一起就像这样:

webview.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(request.getUrl().toString()));
        activity.startActivity(intent);    
        return true;
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        activity.startActivity(intent);
        return true;
    }
});

1 个答案:

答案 0 :(得分:0)

这是因为您使用的方法仅在API 24(7.0)中添加,因此它不存在于较旧的API上,请检查here。您需要做的是在这种情况下使用old one。它被声明为select count(*) from <tablename> ,但你仍然可以使用它。