Ich habe eine WebView in einer meiner Aktivitäten und wenn eine Webseite geladen wird, sammelt die Seite einige Hintergrunddaten von Facebook.
Was ich jedoch sehe, ist, dass die in der Anwendung angezeigte Seite bei jedem Öffnen und Aktualisieren der App gleich ist.
Ich habe versucht, WebView so einzustellen, dass kein Cache verwendet wird, und den Cache und den Verlauf von WebView zu löschen.
Ich bin auch dem Vorschlag hier gefolgt: Wie leere ich den Cache für WebView?
Aber nichts davon funktioniert, hat jemand eine Idee, wie ich dieses Problem überwinden kann, weil es ein wesentlicher Bestandteil meiner Anwendung ist.
mWebView.setWebChromeClient(new WebChromeClient()
{
public void onProgressChanged(WebView view, int progress)
{
if(progress >= 100)
{
mProgressBar.setVisibility(ProgressBar.INVISIBLE);
}
else
{
mProgressBar.setVisibility(ProgressBar.VISIBLE);
}
}
});
mWebView.setWebViewClient(new SignInFBWebViewClient(mUIHandler));
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.clearHistory();
mWebView.clearFormData();
mWebView.clearCache(true);
WebSettings webSettings = mWebView.getSettings();
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
Time time = new Time();
time.setToNow();
mWebView.loadUrl(mSocialProxy.getSignInURL()+"?time="+time.format("%Y%m%d%H%M%S"));
Also habe ich den ersten Vorschlag implementiert (obwohl der Code so geändert wurde, dass er rekursiv ist)
private void clearApplicationCache() {
File dir = getCacheDir();
if (dir != null && dir.isDirectory()) {
try {
ArrayList<File> stack = new ArrayList<File>();
// Initialise the list
File[] children = dir.listFiles();
for (File child : children) {
stack.add(child);
}
while (stack.size() > 0) {
Log.v(TAG, LOG_START + "Clearing the stack - " + stack.size());
File f = stack.get(stack.size() - 1);
if (f.isDirectory() == true) {
boolean empty = f.delete();
if (empty == false) {
File[] files = f.listFiles();
if (files.length != 0) {
for (File tmp : files) {
stack.add(tmp);
}
}
} else {
stack.remove(stack.size() - 1);
}
} else {
f.delete();
stack.remove(stack.size() - 1);
}
}
} catch (Exception e) {
Log.e(TAG, LOG_START + "Failed to clean the cache");
}
}
}
Dies hat jedoch immer noch nichts an der Anzeige der Seite geändert. In meinem Desktop-Browser erhalte ich einen anderen HTML-Code als die in WebView erstellte Webseite, sodass ich weiß, dass WebView irgendwo zwischengespeichert werden muss.
Auf dem IRC-Kanal wurde ich auf ein Update zum Entfernen des Cachings aus einer URL-Verbindung hingewiesen, kann aber noch nicht sehen, wie es auf eine WebView angewendet werden soll.
http://www.androidsnippets.org/snippets/45/
Wenn ich meine Anwendung lösche und erneut installiere, kann ich die Webseite wieder auf den neuesten Stand bringen, dh eine nicht zwischengespeicherte Version. Das Hauptproblem besteht darin, dass Änderungen an Links auf der Webseite vorgenommen werden, sodass das Frontend der Webseite völlig unverändert bleibt.
mWebView.getSettings().setAppCacheEnabled(false);
hat nicht funktioniert?