2010-04-28 752 views
18

Estoy mostrando una página web en un WebView y en la página web, hay un botón. Cuando hace clic en el botón, se supone que debe aparecer un cuadro de diálogo de confirmación, pero no se muestra en mi WebView. Lo hace emergente si voy a la misma página web en el navegador de Android. ¿Alguien sabe cómo manejar los cuadros de diálogo emergentes que provienen de una página web dentro de su WebView?¿Cómo manejar un diálogo de confirmación de la vista web?

Respuesta

42

Ok, encontré la respuesta y aquí está!

Para gestionar una confirmación emergente proveniente de una página web en su WebView, debe anular el método onJsConfirm en WebChromeClient para mostrar la ventana emergente como un diálogo de alerta de Android. Aquí está el código para hacerlo.

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; 
    } 
} 

No se olvide de configurar su WebChromeClient en su WebView ...

mWebView.setWebChromeClient(new MyWebChromeClient()); 

Nota .. esto no es mi código, pero lo encontré y funciona perfectamente para el manejo de Javascript de confirmación diálogos en un WebView!

¡Salud!

+0

Tengo mvc view y Sign Out pero no funciona en el emulador de Android. Necesito ayuda en esto, –

+1

Gracias, Brockoli ... Después de un poco de experimentación, parece que basta con devolver falso del método onJsConfirm para que la WebView muestre un cuadro de diálogo para usted, al menos en JellyBean ... El valor predeterminado WebChromeClient ya devuelve falso, por lo que 'webView.setWebChromeClient (new WebChromeClient());' hizo el trabajo por mí. – Stevie

Cuestiones relacionadas