gpt4 book ai didi

java - Webview尝试打开所有链接,但应该在浏览器中打开

转载 作者:行者123 更新时间:2023-11-30 02:32:56 25 4
gpt4 key购买 nike

我有一个 WebView ,该 WebView 可能包含一个带有两种不同类型链接的网页。我想要的是,如果用户单击包含 http://webpagename.com 的链接,它应该在手机浏览器中打开该链接。如果用户单击没有 http:// 的第二种类型的链接,他应该被重定向到一个新的 Activity 。现在正在发生的事情是,带有 http:// 的链接在 WebView 和浏览器中都打开了。但是,没有http:// 的链接显示网页不可用

在webview中处理onclick链接的代码:

// to know which link is clicked
holder.webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
holder.webView.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest (final WebView view, String url) {
if (url != null && url.startsWith("http://")) {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return null;
}
else {
Log.e("URL: ", url);
System.out.println(url.replace(url.substring(0,url.lastIndexOf("/")+1), ""));
return null;
}
}

/**
* Return WebResourceResponse with CSS markup from a String.
*/

});

return super.shouldOverrideUrlLoading(view, url);
}
});

我应该怎么做才能确保 http:// 链接始终在浏览器中打开,而其他链接打开一个 Activity 但在 webview 中什么也没有打开?

最佳答案

来自docs for WebViewClient , shouldOverrideUrlLoading() 方法:

Returns

True if the host application wants to leave the current WebView and handle the url itself, otherwise return false.

由于您正在处理 WebView 的内容和到 Activity 的重定向,因此此方法应显式返回 true,而不是 super 方法的返回值。

从您的描述和代码来看,您似乎不需要覆盖 shouldInterceptRequest() 方法。

holder.webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
if (url != null && url.startsWith("http://"))
{
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}
else
{
Log.e("URL: ", url);
System.out.println(url.replace(url.substring(0, url.lastIndexOf("/") + 1), ""));
// Start your app's Activity here
}

return true;
}
});

关于java - Webview尝试打开所有链接,但应该在浏览器中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27056247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com