2010-04-28 21 views
18

Sto visualizzando una pagina Web in una WebView e nella pagina Web, c'è un pulsante. Quando si fa clic sul pulsante, si suppone che venga visualizzata una finestra di conferma, ma non viene visualizzata nella mia WebView. Fa popup se vado alla stessa pagina web nel browser Android. Qualcuno sa come gestire i dialoghi popup provenienti da una pagina Web all'interno della tua WebView?Come gestire una finestra di dialogo per confermare la webview?

risposta

42

Ok, ho trovato la risposta ed eccola!

Per gestire una conferma popup proveniente da una pagina Web in WebView, è necessario sovrascrivere il metodo onJsConfirm in WebChromeClient per visualizzare il popup come una finestra di avviso Android. Ecco il codice per farlo.

final Context myApp = this; 
final class MyWebChromeClient extends WebChromeClient { 
    @Override 
    public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { 
     new AlertDialog.Builder(myApp) 
     .setTitle("App Titler") 
     .setMessage(message) 
     .setPositiveButton(android.R.string.ok, 
       new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int which) 
      { 
       result.confirm(); 
      } 
     }) 
     .setNegativeButton(android.R.string.cancel, 
       new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int which) 
      { 
       result.cancel(); 
      } 
     }) 
     .create() 
     .show(); 

     return true; 
    } 
} 

Non dimenticare di impostare il WebChromeClient nella WebView ...

mWebView.setWebChromeClient(new MyWebChromeClient()); 

Nota .. questo non è il mio codice, ma ho trovato e funziona perfettamente per la gestione di javascript conferma finestre di dialogo in una WebView!

Cheers!

+0

Ho vista mvc e Sign Out ma non funziona su emulatore android. Ho bisogno di aiuto in questo, –

+1

Grazie brockoli ... Dopo un po 'di sperimentazione sembra che sia sufficiente restituire false dal metodo onJsConfirm per fare in modo che WebView visualizzi una finestra di dialogo per voi - almeno in JellyBean ... L'impostazione predefinita WebChromeClient restituisce già false, quindi 'webView.setWebChromeClient (new WebChromeClient());' ha fatto il lavoro per me! – Stevie

Problemi correlati