2011-08-22 14 views
6

Questa è la prima volta che chiedo qualcosa, quindi se c'è qualcosa di sbagliato, basta dirmelo e cercherò di risolverlo il prima possibile.Apertura WebView sullo sfondo

Abbiamo un cliente che vuole che accediamo ai propri server con un'app nativa per Android, ma senza darci un modo personalizzato per farlo. Vogliono che usiamo il sito Web corrente che devono registrare e, dopo l'autenticazione, recuperano all'interno del browser un XML che contiene i dati di cui abbiamo bisogno. Successivamente, utilizza i dati nell'app nativa. Tutto ciò con l'utente che non sa/vede che viene utilizzato un browser. Un disastro totale IMHO.

Naturalmente, non ho mai provato questo approccio in passato e le mie prime prove mi fanno sentire come se fosse impossibile (o estremamente difficile) raggiungere. Ogni volta che provo a caricare l'URL in una WebView nascosta, viene visualizzato il browser predefinito che mostra il sito Web.

La mia domanda principale è, è possibile caricare una webview e lavorare con esso (invocare javascript, ecc ...) in background?

Grazie.

risposta

7

È possibile impostare la WebView come nascosta per impostazione predefinita con l'attributo android: visibility = "gone", interagire con esso in fase di esecuzione, quindi quando è necessario mostrarlo all'utente dopo aver caricato i dati, è sufficiente chiamare setVisibility (View.VISIBLE)

Spero che questo aiuti!

+0

Wow, non mi rendevo conto che la visibilità poteva essere usata per le visualizzazioni Web ... ha senso dare il fatto è in classe View. Grazie! –

+0

Nessun problema, contento che abbia aiutato :) – AlexPriceAP

+0

AyncTask potrebbe essere utile per caricarlo in background –

1

Ofc, è necessario utilizzare un Discussione:

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(); 

ricordare, e questo è molto importante, non puoi disegnare a partire da fili all'attività principale. L'unico che può disegnare sullo schermo è l'attività principale. È possibile disegnare con 2 metodi:

Uno, con il metodo _mActivity. runOnUiThread (new Runnable() {_ come l'esempio ho messo. Due, utilizzare un gestore per inviare messaggi da filo all'attività principale con le informazioni che si desidera disegnare.

* Attività principale è l'attività che è nello schermo in quel momento, non è la prima attività dell'app

+0

Grazie per questo. Quando si esegue una 'nuova WebView (this)' in un'attività (invece di fare gli altri approcci che caricano con id) per caricare un oggetto 'WebView' nascosto, questo era l'unico modo per far funzionare correttamente il carico. Grazie! – Marcus

Problemi correlati