La guía paso a paso o código que verás en este post es la solución más rápida y efectiva que hallamos a tus dudas o problema.
Solución:
Bueno, la respuesta corta es que funciona bastante similar a shouldOverrideUrlLoading(WebView view, String url)
como se ilustra en el tutorial de WebView.
Para comenzar, consulte el código a continuación. Simplemente anula el shouldInterceptRequest(WebView view, String url)
método de su WebViewClient. Obviamente, no tiene que hacer eso en línea, pero por el bien de la compacidad, eso es lo que hice:
WebView webview = (WebView) findViewById(R.id.webview);
webview.setWebViewClient(new WebViewClient()
@Override
public WebResourceResponse shouldInterceptRequest (final WebView view, String url)
if (url.contains(".css"))
return getCssWebResourceResponseFromAsset();
else
return super.shouldInterceptRequest(view, url);
/**
* Return WebResourceResponse with CSS markup from a String.
*/
@SuppressWarnings("deprecation")
private WebResourceResponse getCssWebResourceResponseFromString()
return getUtf8EncodedCssWebResourceResponse(new ByteArrayInputStream("body background-color: #F781F3; ".getBytes()));
/**
* Return WebResourceResponse with CSS markup from an asset (e.g. "assets/style.css").
*/
private WebResourceResponse getCssWebResourceResponseFromAsset()
try
return getUtf8EncodedCssWebResourceResponse(getAssets().open("style.css"));
catch (IOException e)
return null;
/**
* Return WebResourceResponse with CSS markup from a raw resource (e.g. "raw/style.css").
*/
private WebResourceResponse getCssWebResourceResponseFromRawResource()
return getUtf8EncodedCssWebResourceResponse(getResources().openRawResource(R.raw.style));
private WebResourceResponse getUtf8EncodedCssWebResourceResponse(InputStream data)
return new WebResourceResponse("text/css", "UTF-8", data);
);
webview.loadUrl("http://stackoverflow.com");
Atrapa la carga del archivo css y devuelve el tuyo WebResourceResponse
que contiene los datos que desea cargar en su lugar.
Tenga en cuenta que este método requiere API nivel 11.
Si desea hacer algo similar para Android 2.x, puede intentar usar el mencionado anteriormente shouldOverrideUrlLoading(WebView view, String url)
para evitar cargar la página, obténgala manualmente, reemplace la referencia al archivo css con la suya y finalmente llame loadData(String data, String mimeType, String encoding)
(o loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)
) en WebView, pasando el contenido html manipulado como un string.
Antes:
Después: