Saltar al contenido

ejemplo de webview shouldinterceptrequest

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:

Antes

Después:

Después

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *