从Android网页浏览历史记录中删除/删除特定网址?

时间:2013-01-09 07:06:36

标签: android android-webview

是否可以从android的webview历史记录中删除特定网址?我谷歌很多,但无法找到任何溶胶,即使我检查了api的文档,我认为没有直接的方法来做同样的事情。 看看下面的代码:

// getting the whole list of web view's history....
WebBackForwardList list = wv.copyBackForwardList();
// getting previuous item/link 
String lastUrl = list.getItemAtIndex(list.getCurrentIndex()-1).getUrl();

从第二行代码可以清楚地看到,可以使用历史记录,所以我认为必须有一些方法或技巧从Web视图历史记录中删除特定链接。 这对你们有意义吗?

任何代码段或任何链接都将受到高度赞赏。

谢谢,

2 个答案:

答案 0 :(得分:3)

好吧,不确定你是否真的可以使用后退列表。我认为它是一个副本 - 至少这就是名字所暗示的。

但是,您可以在某种程度上操纵后退步进。在我的情况下,当用户尝试从第二页退回到第一页时,我已退出应用程序。

  @Override
  public boolean dispatchKeyEvent(KeyEvent event) {
    int action = event.getAction();
    int keyCode = event.getKeyCode();
    switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
            if ((action == KeyEvent.ACTION_DOWN) && myWebView.canGoBack() ) {
                WebBackForwardList list = myWebView.copyBackForwardList();
                String lastUrl = list.getItemAtIndex(list.getCurrentIndex()-1).getUrl().toString();

                // Exit if index == 1, i.e. currently on 2nd page
                if (list.getCurrentIndex() == 1) {
                    finish();
                } else ...

您可以通过组合上面的内容并重载网址加载来跳过其他其他页面:

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

答案 1 :(得分:0)

问与答都帮助我们找到了解决问题的以下方法。

我们想跳回到特定的URL(partialUrl),该URL可以在WebBackForwardList中的任何位置。因此,基于valueString参数传入的部分Url,我们将以下代码用于goBackOrForward。 (我们想从其他任何线程调用该方法,所以使用runOnUiThread)

if (!theValueString.isEmpty()) {
    final String partialUrl = theValueString;
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            // getting the whole list of web view's history....
            WebBackForwardList list = myWebview.copyBackForwardList();
            int index = list.getCurrentIndex();
            for (int i = list.getSize() - 1; i >= 0; i--) {
                String historyurl = list.getItemAtIndex(i).getUrl();
                if (historyurl.contains(partialUrl)) {
                    myWebview.goBackOrForward(i - index);
                    break;
                }
            }
        }
    });
}