본문 바로가기
Android

안드로이드 하이브리드 Webview alert창 처리

by 일용직 코딩노동자 2020. 6. 9.
728x90
반응형

안드로이드 하이브리드 앱을 진행하면서 

 

웹딴에서 띄운 Alert창을 네이티브에서 코드처리를 해주지않으면 정상적으로 작동하지 않는 문제가 있습니다.

 

mWebView.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
                new AlertDialog.Builder(MainActivity.this)
                        .setTitle("확 인")
                        .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() {
                                    @Override
                                    public void onClick(DialogInterface dialog, int which) {
                                        result.cancel();
                                    }
                                })
                        .setCancelable(false)
                        .create()
                        .show();
                return true;
            }

            @Override
            public boolean onJsAlert(WebView view, String url, String message, final android.webkit.JsResult result) {
                new AlertDialog.Builder(MainActivity.this)
                        .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;
            }

맨 위의 mWebView는 처음에 웹뷰 셋팅딴에서 선언해놓으신 이름입니다.

 

해당 구문을 onCreate안에 적어주시면 해결됩니다.

 

여기서 setTitle은 웹에서 작성한 Alert가 아닌 여기 네이티브에서 적어놓은 문구로 출력됩니다.

 

그리고 안쪽의 내용은 웹에서 지정한 내용이 출력됩니다.

728x90
반응형

댓글