gpt4 book ai didi

javascript - Android WebView shouldOverrideUrlLoading,我应该调用 super 方法还是只返回 false

转载 作者:行者123 更新时间:2023-11-30 02:27:13 24 4
gpt4 key购买 nike

我的最低代码如下。
用例是这样的:

  • 如果是第 1 页,则从方法获取 POST 数据并使用 postUrl 发送。

  • 如果是第 2 页,则将 url 发送到 ACTION_VIEW Activity 并让 android 处理它。

  • 我对第 3 页很好奇。在这种情况下,我希望在我的 Webview 中打开 url。

在第 3 页中存在 HTML 表单。因此,如果我使用 loadUrl 加载它,POST 数据就会丢失。我也无法使用 postUrl 加载它,因为 POST 数据在 HTML 页面内,我不想通过 javascript hack 来获取表单的 POST 数据。所以我想在我的 WebView 中打开第 3 页。我应该为它做什么?

我应该调用 super.shouldOverrideUrlLoading(view, url) 还是只调用 return false

Documentation不清楚。在没有 super.shouldOverrideUrlLoading 的情况下调用 return false 会使 Android 处理 webview 之外的 url?


public class myWebViewClient extends WebViewClient {

...

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if ( url.startsWith("http://example.com/page1") ) {
String postData = getPOSTdata();
view.postUrl(url, EncodingUtils.getBytes(postData, "BASE64"));
return true;
}
if ( url.startsWith("http://example.com/page2") ) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(intent);
return true;
}
if ( url.startsWith("http://example.com/page3") ) {
//super.shouldOverrideUrlLoading(view, url);
//return false;
}
}

}

最佳答案

shouldOverrideUrlLoading() 的默认实现返回 false。所以,截至目前,两者完全相同。就我个人而言,我认为返回 false 会使程序员的 Intent 更加清晰,但这是一个风格问题。

此方法返回 false 意味着 WebView 本身将处理 URL。 documentation 中的内容很清楚:

If WebViewClient is provided, return true means the host application handles the url, while return false means the current WebView handles the url.

关于javascript - Android WebView shouldOverrideUrlLoading,我应该调用 super 方法还是只返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27786165/

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