투케이2K

83. (TWOK/LOGIC) [android] 안드로이드 웹뷰 (webview) 페이지 뒤로가기 URL 체크 및 액티비티 종료를 위한 사전 브릿지 통신 로직 본문

투케이2K 로직정리

83. (TWOK/LOGIC) [android] 안드로이드 웹뷰 (webview) 페이지 뒤로가기 URL 체크 및 액티비티 종료를 위한 사전 브릿지 통신 로직

투케이2K 2024. 10. 15. 19:35

[로직 정리]

정리 로직 : Android / 안드로이드

상태 : [android] 안드로이드 웹뷰 (webview) 페이지 뒤로가기 URL 체크 및 액티비티 종료를 위한 사전 브릿지 통신 로직

 

[설 명]

 


// --------------------------------------------------------------------------------------
[사전) 설정 및 정보 확인 사항]
// --------------------------------------------------------------------------------------

- 안드로이드 특정 URL 을 로드 하기 위한 웹뷰 클래스 생성 필요

- 사전 기능 동작 협의를 위해 인터페이스 정의 필요

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[로직 설명]
// --------------------------------------------------------------------------------------

1. 안드로이드 웹뷰에서 로드 시 사전) 자바스크립트 허용 및 브릿지 통신 경로 지정 실시

  >> webview.getSettings().setJavaScriptEnabled(true); // [자바 스크립트 허용]

  >> main_webview.addJavascriptInterface(new AndroidBridge(), "android"); // [android 라는 특정 브릿지 통신 명칭 / AndroidBridge 브릿지 통신 클래스 생성 필요]



2. 웹뷰 브릿지 통신을 위한 JavascriptInterface 클래스 지정 실시 (Web >> App 호출 받기 위함)

    class AndroidBridge {
 
        // ----------------------------------------------------------       
        // [자바스크립트에서 호출하는 안드로이드 메소드]
        // ---------------------------------------------------------- 
        // [Web To App : window.android.setMessage("");]
        // ---------------------------------------------------------- 
        @JavascriptInterface
        public void setMessage(final String arg) {
            js_handler.post(new Runnable() {
                public void run() {
                    try {
                        
                    }
                    catch (Exception e){
                        e.printStackTrace();
                    }
                }
            });
        }

    }



3. 특정 브릿지 경로로 명령이 내려온 경우 >> 페이지 뒤로가기 프로토콜 파싱 및 URL 데이터 프리퍼런스에 저장 수행



4. 앱 네이티브에서 특정 뒤로가기 이벤트 발생 시 >> 프리퍼런스에 저장 된 URL 주소 리스트 확인 및 페이지 뒤로가기 , 액티비티 종료 처리 수행

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {

        if (keyCode == KeyEvent.KEYCODE_BACK) {
            try {

                // [더이상 웹뷰에서 뒤로갈 페이지가 없을 경우 이거나 메인 로드 주소인 경우]
                if (main_webview.canGoBack() == false
                        || String.valueOf(main_webview.getUrl()).equals(특정 페이지 주소 인 경우)){

                    // [액티비티 종료 처리 수행]

                }
                else { // [뒤로 갈 페이지가 있는 경우]

                    // [웹뷰 뒤로가기]
                    main_webview.goBack();
                }
            }
            catch (Exception e){
                //e.printStackTrace();
            }
        }
        return true;
    }


// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[안드로이드 웹뷰 유틸 클래스]

https://blog.naver.com/kkh0977/222680670897?trackingCode=blog_bloghome_searchlist


[기본 브릿지 통신 소스 코드]

https://blog.naver.com/kkh0977/222359952926?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------

 

반응형
Comments