2010-04-28 13 views
18

Ich zeige eine Webseite in einem WebView an und auf der Webseite gibt es eine Schaltfläche. Wenn Sie auf die Schaltfläche klicken, wird ein Bestätigungsdialog angezeigt, der in meinem WebView nicht angezeigt wird. Es öffnet sich, wenn ich auf die gleiche Webseite im android Browser gehe. Kann jemand mit Popup-Dialogen umgehen, die von einer Webseite in Ihrem WebView kommen?Wie wird mit einem Bestätigungsdialog für die Webansicht verfahren?

Antwort

42

Ok, die Antwort gefunden und hier ist es!

Um eine Popup-Bestätigung von einer Webseite in Ihrem WebView zu verarbeiten, müssen Sie die Methode onJsConfirm in WebChromeClient überschreiben, um das Popup als Android Alert-Dialog anzuzeigen. Hier ist der Code dafür.

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

nicht Vergessen Sie Ihre WebChromeClient in Ihrer WebView zu setzen ...

mWebView.setWebChromeClient(new MyWebChromeClient()); 

Hinweis .. das ist nicht mein Code, aber ich fand es und es funktioniert perfekt für Javascript Bestätigung Handling Dialoge in einem WebView!

Prost!

+0

Ich habe MVC View und Sign Out, aber nicht auf Android Emulator arbeiten. Ich brauche Hilfe in diesem, –

+1

Danke brockoli ... Nach ein wenig experimentieren scheint es, dass es genug ist, um nur false von der onJsConfirm Methode zurückzugeben, um den WebView einen Dialog für Sie anzeigen zu lassen - mindestens in JellyBean ... Der Standard WebChromeClient gibt bereits false zurück, also 'webView.setWebChromeClient (new WebChromeClient());' hat den Job für mich erledigt! – Stevie

Verwandte Themen