투케이2K

604. (Android/Java) 안드로이드 웹뷰에서 자바스크립트 Alert 팝업창 호출 이벤트 감지 - WebChromeClient onJsAlert 본문

Android

604. (Android/Java) 안드로이드 웹뷰에서 자바스크립트 Alert 팝업창 호출 이벤트 감지 - WebChromeClient onJsAlert

투케이2K 2023. 7. 20. 19:38

[개발 환경 설정]

개발 툴 : AndroidStudio

 

[소스 코드]

 

            // TODO [크롬 클라이언트 설정 실시]
            main_webview.setWebChromeClient(new WebChromeClient() {

                // TODO [웹뷰 Alert 메시지]
                @Override
                public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
                    S_Log._W_(S_FinalMsg.AL_TITLE + " " + S_FinalMsg.LOG_Event, new String[]{
                            "URL :: " + String.valueOf(url),
                            "MESSAGE :: " + String.valueOf(message)
                    });

                    // -------------------------------------------------------------
                    // [커스텀 팝업창 표시]
                    //*
                    C_Ui_View.observableAlert(A_Webview.this, S_FinalMsg.AL_TITLE, message, S_FinalMsg.AL_OK, S_FinalMsg.AL_NO)
                            .subscribeOn(AndroidSchedulers.mainThread()) // [Observable (생성자) 로직을 IO 스레드에서 실행 : 백그라운드]
                            .observeOn(Schedulers.io()) // [Observer (관찰자) 로직을 메인 스레드에서 실행]
                            .subscribe(new Observer<Boolean>() { // [Observable.create 타입 지정]
                                @Override
                                public void onSubscribe(@NonNull Disposable d) {
                                }
                                @Override
                                public void onNext(@NonNull Boolean value) {

                                    if (value == true){ // [확인 클릭]
                                        result.confirm();
                                    }
                                    else { // [취소 클릭]
                                        result.cancel();
                                    }
                                }
                                @Override
                                public void onError(@NonNull Throwable e) {
                                    S_Log._E_(S_FinalMsg.LOG_Error_State, new String[]{
                                            "ERROR :: " + String.valueOf(e.getMessage())
                                    });
                                }
                                @Override
                                public void onComplete() {
                                }
                            });
                    return true;
                    // */
                    // -------------------------------------------------------------
                    // return super.onJsAlert(view, url, message, result); // TODO [웹 팝업창 사용]
                    // -------------------------------------------------------------
                }

            });

 

반응형
Comments