【发布时间】:2018-07-17 15:41:27
【问题描述】:
我很难管理 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 上环顾四周,但我发现的唯一答案是使用上面的代码。
感谢支持
更新 - 2018 年 2 月 15 日
我已经解决了这个问题,像这样将两个@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;
}
});
【问题讨论】:
标签: android webview hyperlink click android-webview