Systemabsturz beim Überschreiben isInterceptRequest in WebViewClient

Tor:

Überschreiben Sie alle Anfragen von einem WebView und machen Sie die Anfrage selbst (eventuell einen Proxy einrichten).

Code:

@Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { if (url == null || url.trim().equals("")) return null; final DefaultHttpClient httpClient = new DefaultHttpClient(); httpClient.getConnectionManager().closeExpiredConnections(); final HttpUriRequest httpRequest = new HttpGet(url); try { final HttpResponse response = httpClient.execute(httpRequest); final Header[] headers = response.getHeaders(CONTENT_TYPE); String mimeType = ""; String encoding = ""; if (headers != null && headers.length > 0) { final String type = headers[0].getValue(); final int semicolonIndex = type.indexOf(';'); if (semicolonIndex != -1) { mimeType = type.substring(0, semicolonIndex).trim(); encoding = type.substring(semicolonIndex + 1).trim(); final int equalsIndex = encoding.indexOf('='); if (equalsIndex != -1) encoding = encoding.substring(equalsIndex + 1).trim(); } else mimeType = type; } return new WebResourceResponse(mimeType, encoding, response.getEntity().getContent()); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } finally { httpClient.getConnectionManager().closeExpiredConnections(); } return null; } 

Die Anfragen scheinen alle gut zu gehen, aber irgendwann bekomme ich eine Stack-Trace mit einem der beiden folgenden Themen:

 3 15:07:28.650 E/InputDispatcher( 3981): channel '40d76268 com.secure.browser/com.secure.browser.SecureBrowserActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x8 01-03 15:07:28.650 E/InputDispatcher( 3981): channel '40d76268 com.secure.browser/com.secure.browser.SecureBrowserActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 

Was anscheinend anzeigt, dass das Betriebssystem aus Dateideskriptoren läuft (fid)

oder

 01-03 15:29:36.810 I/DEBUG ( 5798): 5903cd34 ac81c0b7 /system/lib/libdvm.so 01-03 15:29:38.380 I/DEBUG ( 5798): debuggerd committing suicide to free the zombie! 01-03 15:29:38.380 I/BootReceiver( 3981): Copying /data/tombstones/tombstone_07 to DropBox 

(SYSTEM_TOMBSTONE)

Was bedeutet, dass ich denke, dass das Betriebssystem in Low-Level-Themen läuft.

Ich benutze 3.0 + so sollte die Funktion unterstützt werden.

Dies scheitert meistens, wenn ich Javascript einschalte, oder nach dem Surfen für eine Weile ohne Javascript.

One Solution collect form web for “Systemabsturz beim Überschreiben isInterceptRequest in WebViewClient”

Ich habe nur einen Kommentar, ich sehe, dass am Anfang du null zurückkommst, wenn die URL null ist oder leer oder nur Leerzeichen ist, aber auf der Dokumentation kannst du lesen "gibt eine WebResourceResponse zurück, die die Antwortinformationen enthält oder null, wenn das WebView geladen werden soll Die Ressource selbst. " Also, wenn das ist, was Sie wollen, gehen Sie vor, wenn nicht würde ich empfehlen super.shouldInterceptRequest (Ansicht, "") verursachen, dass Null-URL vielleicht verursacht einige Probleme.

  • Aktivieren spezifischer SSL-Protokolle mit Android WebViewClient
  • IsOverrideUrlLoading wird NUR für einige Webseiten genannt
  • Proguard Warnung Bibliothek Klasse android.webkit.WebView hängt von Programm-Klasse android.webkit.WebViewClien
  • Android WebView für Facebook Like Button
  • Android - wie man ein Formular POST in Android WebViewClient auf API Ebene 4 abfangen
  • Android WebClient, Rückgabe einer Bildressource durch WebResourceResponse - ohne Bild anzuzeigen
  • Sind WebViewClient und WebChromeClient sich gegenseitig ausgeschlossen?
  • ShouldOverrideUrlLoading in WebView für Android läuft nicht
  • Android webview startet den Browser beim Aufruf von loadurl
  • Android WebView ignoriert target = "_ blank" beim Hinzufügen von WebViewClient
  • HTTP-Anfragen von WebView abhören und überschreiben
  • Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.