2010-04-28 10 views
18

J'affiche une page Web dans un WebView et sur la page Web, il y a un bouton. Lorsque vous cliquez sur le bouton, une boîte de dialogue de confirmation est censée apparaître, mais elle n'apparaît pas dans mon WebView. Il fait popup si je vais à la même page Web dans le navigateur android. Quelqu'un sait comment gérer les boîtes de dialogue contextuelles provenant d'une page Web dans votre WebView?Comment gérer une boîte de dialogue de confirmation de webview?

Répondre

42

Ok, trouvé la réponse et la voici! Pour gérer une confirmation contextuelle provenant d'une page Web dans votre WebView, vous devez remplacer la méthode onJsConfirm dans WebChromeClient pour afficher la fenêtre contextuelle en tant que boîte de dialogue d'alerte Android. Voici le code pour le faire.

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

Ne pas oublier de mettre votre WebChromeClient dans votre WebView ...

mWebView.setWebChromeClient(new MyWebChromeClient()); 

Note .. ce n'est pas mon code, mais je l'ai trouvé et cela fonctionne parfaitement pour la manipulation de javascript confirmation dialogues dans un WebView!

À la votre!

+0

J'ai vue mvc et Sign Out mais ne fonctionne pas sur l'émulateur android. J'ai besoin d'aide pour cela, –

+1

Merci brockoli ... Après un peu d'expérimentation, il semble qu'il suffit de retourner false de la méthode onJsConfirm pour que le WebView affiche une boîte de dialogue pour vous - au moins dans JellyBean ... WebChromeClient renvoie déjà false, donc 'webView.setWebChromeClient (new WebChromeClient());' a fait le travail pour moi! – Stevie

Questions connexes