Android 4.4 gibt ERR_CACHE_MISS Fehler in onReceivedError für WebView zurück
Ich habe eine webview in meiner Layout. Standardmäßig wird ein Suchformular geöffnet. Auf der Suche, eine Auflistung Abschnitt erscheint unterhalb der Suchmaske. Wenn jeder link in der Liste geklickt wird, wird die Seite details geöffnet. Jetzt will ich kontrollierte die zurück-navigation für das webview. Ich stellte diesen code in Aktivität.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
Log.d("TYPE", TYPE);
WebView myWebView = null;
if (TYPE.equalsIgnoreCase("REPORT_ACTIVITY"))
myWebView = reportView;
if (TYPE.equalsIgnoreCase("FEEDBACK_ACTIVITY"))
myWebView = feedbackView;
if (myWebView != null)
//Check if the key event was the Back button and if there's history
if ((keyCode == KeyEvent.KEYCODE_BACK) && myWebView.canGoBack()) {
myWebView.goBack();
return true;
}
//If it wasn't the Back key or there's no web page history, bubble up
//to the default
//system behavior (probably exit the activity)
return super.onKeyDown(keyCode, event);
}
private WebViewClient webViewClient = new WebViewClient() {
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.d("onPageStarted", "onPageStarted");
loadProgressBarBox.setVisibility(View.VISIBLE);
//view.setVisibility(View.GONE);
}
public void onPageFinished(WebView view, String url) {
Log.d("onPageFinished", "onPageFinished");
loadProgressBarBox.setVisibility(View.GONE);
}
public void onReceivedError(WebView view, int errorCode,
String description, String failingUrl) {
Log.d("Error", "Error code: " + errorCode + "/" + description);
}
}
Habe ich auch einen WebViewClient mit dem WebView. Wenn ich, zurück mit zurück-Taste, es funktioniert für jede version 4.4. Aber wenn ich versuche in Android 4.4, es kommt wieder fein aus der details-Seite an Seite mit der Liste. Aber sobald ich es versucht wieder zurück zu gehen, Ihre werfen Fehlercode -1 und ERR_CACHE_MISS in der Beschreibung. Keine Seite wird angezeigt.
09-04 06:59:05.666: D/Error(1102): Error code: -1/net::ERR_CACHE_MISS
Wie zu lösen dieses problem in Android 4.4?
InformationsquelleAutor der Frage dev_android | 2014-09-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Fehler tatsächlich stammt von außerhalb der Anwendung in den meisten Fällen (manchmal ist es nur eine fehlende
INTERNET
Berechtigung, aber das klingt nicht wie hier der Fall).War ich der Eingabe aus einer Erklärung, fand aber ein überschaubares Beispiel, die verdoppelt, wie eine Erklärung in diese Antwort auf eine andere Frage. Hier die relevanten bits, re-hashed ein wenig:
no-cache
im header, was bedeutet, es wird immer vom server angefordert werden.Das problem entsteht, dass der Letzte Schritt. Die Bestätigung Seite war markiert mit
no-cache
so hat es auf Anfrage an der server wieder. Aber zeigen die gleiche Seite, richtig, die gleichen Daten, die übergeben wurde, die erste Zeit braucht, um wieder gesendet.Diese Ergebnisse in Joe immer zweimal in Rechnung gestellt, da eine neue Anfrage gemacht wird mit den gleichen Informationen wie beim letzten mal. Joe wird nicht ein glücklicher camper, wenn er findet zwei Gebühren auf seinem Konto und ein zusätzliches paar Zelte vor seiner Haustür.
Scheint es diese situation war Häufig genug, dass es nun ein standard-Fehler in den meisten Browsern, und es scheint, neuere Versionen von Android. Der Fehler entsteht tatsächlich aus Chrom, das ist, warum Sie werden sehen, dass die gleichen Fehler in Google Chrome, und warum Sie nur sehen, es in 4.4 (die Einführung einer neuen version von WebView basierend auf Chrom).
In der Tat, Sie haben wahrscheinlich gesehen, es ist die Nachricht, zeigt sich in den meisten Browsern die Warnung, die Sie mit etwas entlang der Linien von "Zu aktualisieren diese Seite, wird der browser muss Daten erneut senden...yada yada yada".
Dies ist Android 4.4 ist die Weise, die Sie warnt, was Los ist. Wie zu beheben es hängt wirklich davon ab, was Sie herstellen, aber wenn Sie suchen, für diese situation, werden Sie feststellen, dass es ziemlich normal ist, und hat behebt. Die genauen Auslöser der Fehler ist eigentlich, wenn die Anforderung nicht bearbeitet werden können, die aus dem cache (in diesem Fall
no-cache
verursacht).Je nach Art der Anfrage, vielleicht
no-cache
ist eigentlich nicht nötig.Aber von der Anwendung Sicht, das Hauptproblem ist,
onReceiveError
ist eine Art "last resort" für die WebView. Fehler, die Sie dort bekommen haben, weitergegeben vom zugrunde liegenden system. Und wenn Sie am Ende gibt, man kann nicht mehr die Seite laden so wie es da steht. So dass Sie nicht haben eine chance zu ermöglichen, senden, und Sie können nicht geben Sie den Benutzer, der option, im Gegensatz zu, sagen, Google Chrome.InformationsquelleAutor der Antwort Selali Adobor
Ich lief in das gleiche Problem weil in meinem manifest-Ordner hatte ich die Internet-Berechtigung aktiviert:
Hatte ich (Fehler)
Haben sollte (kein Fehler)
InformationsquelleAutor der Antwort codebyjames
Verwenden
Wird es fix ERR_CACHE_MISS in der Webansicht.
Vielleicht werden Sie es ändern müssen, um SDK_INT == 19 nach einiger Lollipop-WebView-updates, aber es funktioniert jetzt.
InformationsquelleAutor der Antwort romashko_o
diese Berechtigung in Ihrem andriodManifest.xml Datei
InformationsquelleAutor der Antwort saigopi