본문 바로가기
네이티브/Android

Android 웹뷰 alert, confirm 띄우기

by 우보틀 2022. 1. 24.

안드로이드 웹뷰 에서는 alert 와 confirm을 따로 커스텀 하지 않아도 띄워주긴 합니다.

아래의 내용은 좀 더 입맛에 맞게 브라우저에서 alert와 confirm을 띄워줄 때 액션을 다루기 위한 내용 입니다.

 

WebView webview;
WebChromeClient webClient = new WebChromeClient() { 
	// 여기에서 메서드들을 override 해주면 됩니다
}

webview.setWebChromeClient(webClient);

은 WebChromeClient의 객체를 생성해주는 부분인데 이 클래스 안에 정말 많은 기능들이 숨어있습니다.

(제가 봤을때는 19개의 메소드가 있었고 alert, confirm, prompt, geolocation 승인 등등 다양한 내용이 있었습니다.)

 

이중에서 위의 주제에 적합한 두개의 메소드를 오버라이드 해줄겁니다. 

 

 

alert 

@Override
public boolean onJsAlert(WebView view, String url, String message, final 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;
}

 

confirm 

@Override
public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
    new AlertDialog.Builder(MainActivity.this)
            .setTitle("confirm Test")
            .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();
                        }
                    })
            .create()
            .show();
    return true;
}

 

 

* 간편하게 테스트 하시고 싶으실때는 디버거 모드의 inspector에서 console창에 접근후 alert, confirm을 실행시켜주시면 됩니다!