자바스크립트를 따로 지정해주지 않으면 실행되지 않는다는 걸 알고
급하게 찾은 ....
// 웹뷰를 만들고 WebView testWebView = (WebView)findViewById(R.id.testWeb); // 구글에서 제공하는 크롬클라이언트를 생성한다. WebChromeClient testChromeClient = new WebChromeClient(); //생성한 크롬 클라이언트를 웹뷰에 셋팅한다 testWebView .setWebChromeClient( testChromeClient );이렇게 별거 없이 크롬 클라이언트를 생성해서 넣는 것 만으로 팝업이 된다
문제는 팝업이 되기는 하나 팝업에 IP가 찍혀 나오는 문제가 있다는 것이다
그래서 크롬 클라이언트를 상속받아서 클래스를 생성한다
그리고 onJsAlert, onJsConfirm 를 재 설정하여 원하는 팝업이 나올수 있게 만들어 준다
public class HelloWebChromeClient extends WebChromeClient { @Override public boolean onCreateWindow(WebView view, boolean dialog, boolean userGesture, Message resultMsg) { // TODO Auto-generated method stub return super.onCreateWindow(view, dialog, userGesture, resultMsg); } @Override public boolean onJsAlert(WebView view, String url, String message, final JsResult result) { // TODO Auto-generated method stub //return super.onJsAlert(view, url, message, result); new AlertDialog.Builder(view.getContext()) .setTitle("알림") .setMessage(message) .setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { result.confirm(); } }) .setCancelable(false) .create() .show(); return true; } @Override public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) { // TODO Auto-generated method stub //return super.onJsConfirm(view, url, message, result); new AlertDialog.Builder(view.getContext()) .setTitle("알림") .setMessage(message) .setPositiveButton("네", new AlertDialog.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { result.confirm(); } }) .setNegativeButton("아니오", new AlertDialog.OnClickListener(){ public void onClick(DialogInterface dialog, int which) { result.cancel(); } }) .setCancelable(false) .create() .show(); return true; } }
<출처 : http://shinehand.egloos.com/456203 [shinehand님 블로그]>
댓글 없음:
댓글 쓰기