是否可以从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视图历史记录中删除特定链接。 这对你们有意义吗?
任何代码段或任何链接都将受到高度赞赏。
谢谢,
答案 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;
}
}
}
});
}