gpt4 book ai didi

java - 开发人员站点在重新加载 webview-shouldOverrideUrlLoading 时相互矛盾

转载 作者:搜寻专家 更新时间:2023-11-01 09:07:25 24 4
gpt4 key购买 nike

很多 Android 开发者实现了他们自己的 webview。尽管在 stackoverflow 上讨论了很多与此主题相关的问题,但这里可能是造成这种不明确的原因。

为了在您的 WebView 中打开链接,android 开发人员定义了他们自己的 webview。

某个开发者网站是否有错误? API级别之间有区别吗?shouldOverrideUrlLoading 最干净、最好的用途是什么?

答案会帮助我们的团队和许多其他使用 android webviews 的开发人员。谢谢。

最佳答案

如果您决定实现WebViewClient:

webView.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
// My own condition to decide if I should skip URL loading
boolean avoidURLLoading = ...

if (avoidURLLoading)
{
// Ask the WebView to avoid loading the URL,
// I want to manage this case on my own.
return true;
}
else
{
// Let the WebView load the URL
return false;
}
};
});

如果您没有实现 WebViewClient,每次您要求 WebView 使用 loadUrl 方法加载 URL 时,它将要求 Activity Manager 找到合适的应用程序来加载 URL(通常是设备中安装的网络浏览器)。

WebViewClientshouldOverrideUrlLoading的默认实现是

public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return false;
}

所以如果你只是写这样的东西

webView.setWebViewClient(new WebViewClient());

URL 将在您自己的 WebView 中加载,而不是在外部网络浏览器中加载。

当您想要修改 URL 时,您通常会在 shouldOverrideUrlLoading 中返回 true,然后使用另一个 loadUrl 调用加载新的 URL 或者当您只想避免加载 URL 并以不同的方式处理请求时。

您示例中的行为

public boolean shouldOverrideUrlLoading(WebView view, String url)
{
view.loadUrl(url);
return true;
}

相当于

public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return false;
}

因为您要告诉 WebView 避免处理 URL 加载(return true),但您也在使用 view.loadUrl 发出另一个请求(url) 所以实际上你最终加载了 URL。

关于java - 开发人员站点在重新加载 webview-shouldOverrideUrlLoading 时相互矛盾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10865788/

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