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.

  • Android: EventHub.removeMessages (int was = 107) wird nicht unterstützt, bevor das WebViewCore eingerichtet ist
  • Lade WebView zwischengespeichertes Bild in eine ImageView
  • WebViewClient.shouldInterceptRequest () auf Android 2.x erhalten
  • OnPageStart rief viele Male an und onPageFinished nicht für einzelne Seite aufgerufen
  • Wie bekomme ich Link-URL in Android WebView mit HitTestResult für ein verknüpftes Bild (und nicht die Image-URL) mit Longclick
  • WebViewClient.onPageStarted () wurde zweimal bei der Angabe von nicht vorhandener URL über WebView.loadURL () aufgerufen.
  • Android - Open target _blank Links in WebView mit externem Browser
  • shouldOverrideUrlLoading funktioniert nicht und fängt Link-Klicks, während die Seite geladen wird
  • Android - OkHttp mit Webview verwenden
  • Laden Sie Kamera-Foto und Filechooser aus Webview INPUT-Feld
  • Stoppen Sie das Laden in webViewClient
  • Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.