Подтвердить что ты не робот

Как очистить историю веб-просмотра в android

История веб-просмотра не очищается... Что не так с приведенным ниже кодом?

Создание веб-представления

mWebViewReport=(WebView)findViewById(R.id.report_page);
mWebViewReport.setWebViewClient(new HelloWebViewClient());
mWebViewReport.getSettings().setBuiltInZoomControls(true);

Загрузите файл справки при нажатии кнопки справки

mWebViewReport.loadUrl("file:///android_asset/help.html");
mWebViewReport.clearHistory();
mWebViewReport.clearCache(true);

Загрузка итогового файла при нажатии кнопки сводки

  mWebViewReport.loadUrl("file:///android_asset/summary.html");

    //On back button click
     if (mWebViewReport.canGoBack()) {
            mWebViewReport.goBack();
            return ;
      }

Здесь также можно увидеть страницу справки...

4b9b3361

Ответ 1

Вы не можете очистить историю, пока веб-просмотр загружает страницу (url), чтобы очистить настройку истории на слушателеPageFinished следующим образом

объявить публичный var перед onCreate

boolean clearHistory = false;

теперь, когда вы объявляете свой mWebViewReport, установите это

mWebViewReport.setWebViewClient(new WebViewClient(){

    @Override
    public void onPageFinished(WebView view, String url) 
    {
        if (clearHistory)
        {
            clearHistory = false;        
            mWebViewReport.clearHistory();
        }
            super.onPageFinished(view, url);
    }
});

Теперь, когда вы вызываете вашу помощь, url insted для очистки истории просто устанавливает clearHistory в true

mWebViewReport.loadUrl("file:///android_asset/help.html");
mWebViewReport.clearHistory();  // REMOVE THIS LINE
mWebViewReport.clearCache(true); // REMOVE THIS LINE
clearHistory = true; // ADD THIS LINE

Ответ 2

Я думаю, clearHistory() очищает back and forward list. Таким образом, текущий загруженный URL-адрес все равно останется в списке.

Ответ 3

Решение от Osama_Almaani работает очень хорошо! Вы можете оптимизировать свой код, перемещая флаг в реализацию WebViewClient.

Определите поле в своей деятельности и используйте это вместо анонимного объявления:

private MyWebViewClient myWebViewClient = new MyWebViewClient();
...
myWebView.setWebViewClient(myWebViewClient);

Повысьте класс WebViewClient новым методом clearHistory():

private class MyWebViewClient extends WebViewClient {
  private boolean clearHistory = false;

  /**Use this instead of WebView.clearHistory(). */
  public void clearHistory(){
    clearHistory = true;
    }

  @Override
  public void onPageFinished(WebView view, String url) {
    if(clearHistory){
      Log.d(TAG, "clearHistory now");
      clearHistory = false;
      myWebView.clearHistory();
    }
    super.onPageFinished(view, url);
    }
}

Теперь вы можете использовать этот новый метод:

myWebViewClient.clearHistory();
mWebViewReport.loadUrl("file:///android_asset/help.html");