Я пытаюсь повторно использовать существующий WebView, очищая любые личные данные, оставленные предыдущим пользователем:
CookieManager.getInstance().removeAllCookie();
webview.clearHistory();
webview.clearFormData();
webview.clearCache(true);
clearHistory
кажется, что только очистить список назад/вперед, доступный через API, но не внутренний список, используемый для окраски ссылок внутри веб-контента.
Я даже попробовал следующее, предложенное другим qaru.site/info/72103/...:
deleteDatabase("webview.db");
deleteDatabase("webviewCache.db");
Мне все еще не повезло: селектор CSS :visited
все еще работает после перезагрузки страницы.
Альтернативой может быть использование функции частного просмотра API уровня 11 (новый аргумент конструктора), но тогда я вообще не могу воспользоваться посещенными ссылками; и больше не может ориентироваться на более старые версии.
Возможно, у кого-то есть решение этой проблемы? Благодарим за помощь.
Резюме ответов, которые я получил до сих пор:
Я попробовал эти два ответа, но первый, похоже, очищает хранилище данных HTML5, и последнее похоже на специфику встроенного браузера:
WebStorage.getInstance().deleteAllData();
Browser.clearHistory(getContentResolver());
WebChromeClient.getVisitedHistory(ValueCallback<String[]> callback)
вызывается только после того, как я впервые создал новый WebView в недавно установленном приложении.
Я попытался удалить WebView
из hierachy из представления и создать новый, но, к сожалению, посещаемая история, похоже, сохраняется для всего приложения.