8

AndroidのWebビュー履歴から特定のURLを消去することは可能ですか?私はグーグルでたくさん検索しましたが、solを見つけることができませんでした。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();

コードの2行目から、履歴をいじることができることは明らかです。したがって、Webビューの履歴から特定のリンクを削除する方法またはトリックが必要だと思います。皆さんにとって意味がありますか?

コードスニペットまたはリンクは高く評価されます。

ありがとう、

4

2 に答える 2

4

さて、あなたが実際にバックフォワードリストをいじることができるかどうかはわかりません。私はそれがコピーだと思います-少なくともそれは名前が示唆していることです。

ただし、バックステッピングはある程度操作できます。私の場合、ユーザーが2番目のページから最初のページに戻ろうとすると、すでにアプリケーションを終了しています。

  @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 ...

上からのものを組み合わせてURLの読み込みをオーバーロードすることで、他のページをまたぐことができます。

            @Override
            public boolean shouldOverrideUrlLoading(WebView  view, String  url){
                 view.loadUrl(url);
                 return true;
            }
于 2013-01-24T20:42:34.717 に答える
0

質問と回答の両方が、私たちの問題に対する次の解決策を見つけるのに役立ちました。

WebBackForwardListのどこにあってもよい特定のURL(partialUrl)にジャンプして戻りたいと思いました。そのため、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;
                }
            }
        }
    });
}
于 2020-01-08T07:45:12.060 に答える