android - 如何仅在 webview 历史记录中返回到非空白页面?

标签 android android-webview

我曾经使用 onPageFinished 来跟踪 webview 历史:

@Override
public void onPageFinished(WebView view, String url) {
    super.onPageFinished(view, url);
    if ("about:blank".equals(url) && view.getTag() != null){
        view.loadUrl(view.getTag().toString());
    }else{ 
        view.setTag(url);
    }
}

现在,当我尝试 view.goBack() 时,它返回到 about:blank 而不是我想要的页面。

我如何设置“about:blank” url 以便将其放入 webview 历史记录中,这样当我返回时就不会再看到它。但我不想要 view.clearHistory(),因为它会删除所有历史记录。

最佳答案

好吧,假设您想回到历史记录,直到找到第一个非 about:blank 方法如下:

在你的 Activity 中

 public void goBackInWebView(){
    WebBackForwardList history = webView.copyBackForwardList();
    int index = -1;
    String url = null;

    while (webView.canGoBackOrForward(index)) {
          if (!history.getItemAtIndex(history.getCurrentIndex() + index).getUrl().equals("about:blank")) {
             webView.goBackOrForward(index);
             url = history.getItemAtIndex(-index).getUrl();
             Log.e("tag","first non empty" + url);
             break;
           }
           index --;

    }
   // no history found that is not empty
   if (url == null) {
      finish();
   }

代码逻辑是循环抛出之前的所有页面。并且首先没有空页面加载它。 如果没有找到完成应用程序。

关于android - 如何仅在 webview 历史记录中返回到非空白页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15321413/

相关文章:

java - 在android studio中更改构建sdk时出错

android - 如何在 Android 上使用 UsbDeviceConnection 从 HID 设备请求 USB HID 报告描述符

android - 改变 WebView 中显示的数据

java - 如果没有互联网连接,则从 Assets 加载 html

android - ViewPager切换到下一页跳转半页

java - 如何从 "Recent opened apps"获取屏幕截图?

android - 当我尝试创建 apk 时,Flutter 卡在 "Running Gradle task ' bundleRelease'...”

java - 以给定的延迟连续运行函数

html - 512mb 内存设备上 Android 版 Chrome 中的渐变绘制问题

javascript - Flutter WebView blob pdf 下载