2010-04-28 6 views
18

WebView에 웹 페이지를 표시하고 있으며 웹 페이지에는 버튼이 있습니다. 버튼을 클릭하면 확인 대화 상자가 팝업되지만 내 WebView에는 표시되지 않습니다. 안드로이드 브라우저에서 동일한 웹 페이지로 이동하면 팝업이 표시됩니다. 누구든지 WebView 내부의 웹 페이지에서 나오는 팝업 대화 상자를 처리하는 방법을 알고 있습니까?webview 확인 대화 상자를 처리하는 방법?

답변

42

좋아, 답을 찾았습니다. 여기 있습니다!

WebView에서 웹 페이지의 팝업 확인을 처리하려면 WebChromeClient의 onJsConfirm 메서드를 재정 의하여 Android Alert 대화 상자로 팝업을 표시해야합니다. 이렇게하는 코드는 다음과 같습니다.

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

이 당신의 웹보기에 WebChromeClient를 설정하는 것을 잊지 마세요 ...

mWebView.setWebChromeClient(new MyWebChromeClient()); 

주 .. 이건 내 코드가 아닙니다,하지만 난 그것을 발견하고는 자바 스크립트 확인을 처리하는 완벽하게 작동 대화 상자를 WebView!

건배!

+0

나는 MVC보기 및 Sign Out을 가지고 있지만 안드로이드 에뮬레이터에서 작동하지 않습니다. 나는 이것에 도움이 필요하다 –

+1

감사합니다 brockoli ... 약간의 실험이 끝난 후에는 WebView에서 대화 상자를 표시하도록 onJsConfirm 메서드에서 false를 반환하는 것만으로도 충분할 것 같습니다. 적어도 JellyBean에서는 ... 기본값 WebChromeClient는 이미 false를 반환하므로'webView.setWebChromeClient (new WebChromeClient());가 나를 위해 일했습니다! – Stevie

관련 문제