gpt4 book ai didi

Android WebView - 返回 URL 重定向

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:53 26 4
gpt4 key购买 nike

我有一个关于 Android webview 的问题。

假设 URL A 重定向到 URL B。

我的 android 应用程序在尝试打开 URL A 时,webview 自动重定向到 URL B。

如果一个 URL 被重定向到其他一些 url,我看到这两个 url 都存储在 webview 历史记录中。现在我的 webview 历史记录包括 [, , URL A, URL B ]

在从 URL B 网页点击返回键时,webview 将尝试加载 URL A,它再次重定向到 URL B。我们需要双击返回键以返回到 URL A 之外

我该如何解决这个问题?过去 2 小时的挣扎:(

最佳答案

我也遇到了同样的问题,正在想办法解决。和你的一样。当我单击第一个链接 (www.new.a) 时,它会自动重定向其他链接 (mobile.new.a)。通常链接重定向两个或三个,我的解决方案几乎适用于每个重定向链接。我希望这个答案能帮助您解决恼人的重定向链接问题。

我终于明白了。你需要一个 WebViewClient有四个 API。 WebViewClient中有shouldOverrideUrlLoading()、onPageStarted()、onPageFinished()、doUpdateVisitedHistory()。您需要的所有 API 都是 API 1,所以不用担心。

事情是这样的。您可以使用其他函数而不是 onKeyUp()。

public class MyWebView extends WebView{
...
private int mRedirectedCount=0;
....

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && this.canGoBack()) {
if(mRedirectedCount>0){
while(mRedirectedCount>0){
this.goBack();
mRedirectedCount--;
}
mRedirectedCount=0; //clear
}else{
this.goBack();
}
return true;
}

private class MyWebViewClinet extends WebViewClient{
boolean mIsPageFinished=true;
...

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
.....
if(mIsPageFinished){
mRedirectedCount=0; //clear count
}
.....
}

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
mIsPageFinished = false;
}

@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mIsPageFinished = true;
}

@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
super.doUpdateVisitedHistory(view, url, isReload);

if(!mIsPageFinished){
mRedirectedCount++;
}
}

关于Android WebView - 返回 URL 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7011207/

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