Como evitar links en WebView

1,190 views
Skip to first unread message

Roberto Anguita

unread,
Feb 21, 2012, 9:12:26 AM2/21/12
to desarrolladores-android
Buenas foreros
Tengo una aplicación que carga en dos secciones concretas una URL
compuesta de varios gráficos en un webview, pero no quiero permitir la
navegación dentro del webview.
hay algún truco o forma de poder evitar que se sigan los link del
webview. Estoy trabajando en Level 8, en Level 11 he visto que existe
un meto llamado setAllowAccess o algo así para evitar seguir los link
pero para versiones anteriores no encuentro de que forma se puede
evitar

Roberto Anguita

unread,
Feb 21, 2012, 10:51:56 AM2/21/12
to desarrolladores-android
o dicho de otra forma que me seria más util, cargo una URL que tiene
muchas imágenes (esponsor +portada) y quiero capturar únicamente la
imagen de la portada para ser el inicio de la aplicación. Hay alguna
forma fácil de hacer esto, ¿podéis pasarme alguna referencia para
poder leer sobre el tema este y desarrollarlo?

On 21 feb, 15:12, Roberto Anguita <roberto.anguitamar...@gmail.com>
wrote:

Roberto Anguita

unread,
Feb 24, 2012, 3:24:52 AM2/24/12
to desarrolladores-android
he visto que un webview tiene un metodo capture para capturar esa
imagen pero no se como apartir de esa captura poder convertirlo en
imagen y mostrar solamente la imajen

On 21 feb, 10:51, Roberto Anguita <roberto.anguitamar...@gmail.com>
wrote:
> > evitar- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Juan de Dios Maldonado Sánchez

unread,
Feb 24, 2012, 3:39:08 AM2/24/12
to desarrollad...@googlegroups.com
Como veo que nadie te responde, te respondo yo.

Primero, nunca he trabajado con un WebView.
Segundo, lo que te pongo es lo que según he estado buscando, parece que puede funcionar.

Sobre cómo hacer que no se sigan ciertos links en un WebView, creo que esto puede funcionar. Podemos partir de este código:

public class WebViewTest extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        /* Set the Content View */
        setContentView(R.layout.main);
        
        /* Get the WebView */
        WebView wv1 = (WebView) findViewById(R.id.wv1);
        
        /* Activate JavaScript */
        wv1.getSettings().setJavaScriptEnabled(true);
        
        /* Prevent WebView from Opening the Browser */
        wv1.setWebViewClient(new InsideWebViewClient());
    }
    
    /* Class that prevents opening the Browser */
    private class InsideWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }
}


Lo que hace es forzar la carga de los enlaces en los que se le hace clic en el propio WebView.

Si te fijas bien en shouldOverrideUrlLoading(...) se llama a view.loadUrl(url) y se devuelve true para evitar que se abra con un navegador externo.

Lo que tienes que hacer, es, en ese método, mirar si la url cumple el patrón de URLs que quieres que se sigan y si esto es así, llamas a view.loadUrl(url) y devuelves true, si no, pues no lo llamas y simplemente devuelves true. (Para que no se abra aparte en otro navegador)

Espero haberme explicado bien. No tengo ni idea de si se puede hacer de otra forma porque nunca he trabajado con un webview, pero ha sido la primera idea que me ha venido a la mente.

Otra idea que también puede servir es la de una vez cargado todo el DOM de la página, eliminar todos los tags <a> de enlaces que no quieras que funcionen y sustituirlos por tags <span>. De esta forma, no aparecerán en la web como enlaces.

Sobre hacer que sólo se  muestre una imagen, pues te recomendaría que te hicieras tú mismo una página de portada que cargaras localmente y que tuviera un enlace a la página siguiente después de la portada que te gustaría que se viera. (Que sería la página real)

Saludos.


--
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a desarrolladores-a...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/desarrolladores-android?hl=es.




--
An'Brain - Prueba el nuevo widget inteligente para tu Android.
Idiotizer Free - Idiotiza a tus amigos. (Se requieren auriculares)
Track My App - Realiza un seguimiento de tus aplicaciones en el Android market.

Roberto Anguita

unread,
Feb 24, 2012, 5:31:52 PM2/24/12
to desarrolladores-android
La forma de cargarlo es similar a la que uso, lo del meter el filtro
en el metodo es buena idea eso si me eliminara los links pero , la
forma que comentas de limpiar la pagina para solo mostrar la imagen,
imagino a que te refieres copair el codigo fuente html y ponerlo en
local a la aplicacion.El problema es que no se puede ya que es una
pagina en asp y la imagen cambia dinamicamente cambiando el enlace de
la imagen y a la pagina que apunta, por eso que planteaba la solucion
de capturar pantalla del webview aunque no se si es posible.

On 24 feb, 09:39, Juan de Dios Maldonado Sánchez <jua...@gmail.com>
wrote:
> Como veo que nadie te responde, te respondo yo.
>
> Primero, nunca he trabajado con un WebView.
> Segundo, lo que te pongo es lo que según he estado buscando, parece que
> puede funcionar.
>
> Sobre cómo hacer que no se sigan ciertos links en un WebView, creo que esto
> puede funcionar. Podemos partir de este código:
>
> public class WebViewTest extends Activity {
>     @Override
>     public void onCreate(Bundle savedInstanceState) {
>         super.onCreate(savedInstanceState);
>
>         /* Set the Content View */
>         setContentView(R.layout.main);
>
>         /* Get the WebView */
>         WebView wv1 = (WebView) findViewById(R.id.wv1);
>
>         /* Activate JavaScript */
>         wv1.getSettings().setJavaScriptEnabled(true);
>
>         /* Prevent WebView from Opening the Browser */
>         wv1.setWebViewClient(new InsideWebViewClient());
>     }
>
>     /* Class that prevents opening the Browser */
>     private class InsideWebViewClient extends WebViewClient {
>         @Override
>         public boolean shouldOverrideUrlLoading(WebView view, String url) {
>             view.loadUrl(url);
>             return true;
>         }
>     }
>
> }
>
> http://www.androidsnippets.com/webview-activate-javascript-and-open-l...
> An'Brain<https://market.android.com/details?id=com.nidrico.apps.anbrain.full> -
> Prueba el nuevo widget inteligente para tu Android.
> Idiotizer Free<https://market.android.com/details?id=com.nidrico.apps.idiotizerfree>-
> Idiotiza a tus amigos. (Se requieren auriculares)
> Track My App<https://market.android.com/details?id=com.nidrico.apps.trackmyapp>-

Juan de Dios Maldonado Sánchez

unread,
Feb 25, 2012, 7:30:04 AM2/25/12
to desarrollad...@googlegroups.com
Puedes referenciar a una imagen remota en una página HTML local. Mientras pongas bien su URL(y no hayan limitado su carga utilizando el header "Referer") no tendrás muchos problemas.
An'Brain - Prueba el nuevo widget inteligente para tu Android.
Idiotizer Free - Idiotiza a tus amigos. (Se requieren auriculares)
Track My App - Realiza un seguimiento de tus aplicaciones en el Android market.

Roberto Anguita

unread,
Feb 27, 2012, 4:34:27 AM2/27/12
to desarrolladores-android
Si esa solucion la pense, pero el problema es que la imagen principal
cambia por semanas, es dinamica, se llama a un puto asp que asigna
dinamicamente la direccion.
No se como la gente puede usar asp la verdad..!!! me tiene quemadito y
o encuentro algo por internet o le pongo una pegatina de inicio. O la
propia pagina principal redimensionando el metodo que me dijiste, lo
malo es que hay anunciantes que no queria mostrar pero no veo muchas
alternativas

He leido lo del metodo capture y he visto que genera un picture del
webview, pero luego a la hora de intentar convertirlo en un bitmap
para mostrarlo me da un petardazo.

On 25 feb, 13:30, Juan de Dios Maldonado Sánchez <jua...@gmail.com>
wrote:
> Realiza un seguimiento de tus aplicaciones en el Android market.- Ocultar texto de la cita -

Juan de Dios Maldonado Sánchez

unread,
Feb 27, 2012, 4:38:40 AM2/27/12
to desarrollad...@googlegroups.com
Pues haz una petición Web a la web y mediante una expresión regular, cargas la URL de la imagen y ya está.
An'Brain - Prueba el nuevo widget inteligente para tu Android.
Idiotizer Free - Idiotiza a tus amigos. (Se requieren auriculares)
Track My App - Realiza un seguimiento de tus aplicaciones en el Android market.

Roberto Anguita

unread,
Feb 27, 2012, 5:33:31 AM2/27/12
to desarrolladores-android
Puedes pasarme algun ejemplo de como hacer eso o decirme algun sitio
donde pueda documentarme de como se hace?

On 27 feb, 10:38, Juan de Dios Maldonado Sánchez <jua...@gmail.com>
wrote:

Juan de Dios Maldonado Sánchez

unread,
Feb 27, 2012, 8:58:13 AM2/27/12
to desarrollad...@googlegroups.com
Para saber cómo descargar el contenido de una página Web busca en Google: 
java get url content string

Luego haces una expresión regular para obtener la URL de la imagen.
An'Brain - Prueba el nuevo widget inteligente para tu Android.
Idiotizer Free - Idiotiza a tus amigos. (Se requieren auriculares)
Track My App - Realiza un seguimiento de tus aplicaciones en el Android market.

Roberto Anguita

unread,
Feb 28, 2012, 1:08:04 PM2/28/12
to desarrolladores-android
Muchas gracias Juande como siempre resolutivo 100%. Ahora leeo todas
las lineas del html de la pagina principal y filtro por las imagenes
jpg y ya puedo descomponer todas las imagenes y quedarme solo con las
que quiero.

On 27 feb, 14:58, Juan de Dios Maldonado Sánchez <jua...@gmail.com>
wrote:
> ...
>
> leer más »

Juan de Dios Maldonado Sánchez

unread,
Feb 28, 2012, 3:11:31 PM2/28/12
to desarrollad...@googlegroups.com
Me alegro de que las pistas que te he dado hayan llegado a buen puerto.
Es que tiempo para decirte cómo hacerlo paso a paso, pues no tengo. (y gracias doy por moderar poder responder así a algunos mensajes del grupo)
An'Brain - Prueba el nuevo widget inteligente para tu Android.
Idiotizer Free - Idiotiza a tus amigos. (Se requieren auriculares)
Track My App - Realiza un seguimiento de tus aplicaciones en el Android market.

Reply all
Reply to author
Forward
0 new messages