Как очистить историю веб-просмотра в 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 ;
}
Здесь также можно увидеть страницу справки...
Ответы
Ответ 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");