2011-08-22 22 views
6

Esta es la primera vez que pregunto algo, así que si hay algún problema, solo dígamelo e intentaré solucionarlo lo antes posible.Apertura de WebView en el fondo

Tenemos un cliente que quiere que inicie sesión en sus servidores con una aplicación nativa de Android, pero sin darnos una forma personalizada de hacerlo. Quieren que usemos el sitio web actual que tienen que registrar y, una vez que se realiza la autenticación, recuperamos en el navegador un XML que contiene los datos que necesitamos. Después de eso, usa los datos en la aplicación nativa. Todo esto con el usuario que no sabe/ve que se está usando un navegador. Un desastre total en mi humilde opinión.

Por supuesto, nunca he probado este enfoque en el pasado y mis primeras pruebas me hacen sentir que esto es imposible (o extremadamente difícil) de lograr. Cada vez que intento cargar la URL en un WebView oculto, aparece el navegador predeterminado que muestra el sitio web.

Mi pregunta principal es, ¿es posible cargar una vista web y trabajar con ella (invocar javascript, etc ...) en segundo plano?

Gracias.

Respuesta

7

Se podría establecer el WebView a oculta de manera predeterminada con el androide atributo: la visibilidad = "ido", interactuar con él en tiempo de ejecución a continuación, cuando se necesita para mostrarla al usuario después de haber cargado los datos, simplemente llame setVisibility (View.VISIBLE)

Espero que esto ayude!

+0

Guau, no me di cuenta de que la visibilidad podría usarse para las vistas web ... tiene sentido si se trata de la clase Ver. ¡Gracias! –

+0

No hay problema, me alegro de que ayudó :) – AlexPriceAP

+0

AyncTask podría ser útil para cargarlo en el fondo –

1

Ofc, se debe utilizar un hilo:

protected void getPage(){ 
    Thread th = new Thread(){ 

     public void run(){ 

      //Download and make things 



      mActivity.runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        //print int the activity 

       } 
      }); 
     } 
    }; 

    th.start(); 

recordar, y eso es muy importante, no puedes sacar de hilo a la actividad principal. El único que puede dibujar en la pantalla es la actividad principal. Puede dibujar con 2 métodos:

Uno, con el método _mActivity. runOnUiThread (nueva Ejecutable() {_ como el ejemplo que puse. Dos, utilizar un manejador para enviar mensajes de rosca con la actividad principal con la información que desea dibujar.

* La actividad principal es la actividad que está en la pantalla en ese momento, no es la primera actividad de la aplicación

+0

Gracias por esto. Al hacer un 'nuevo WebView (this)' en una actividad (en lugar de hacer los otros enfoques que se cargan por id) para cargar un objeto oculto 'WebView', esta era la única forma en que podía hacer que una carga funcionara correctamente. ¡Gracias! – Marcus