투케이2K

811. (Android/Java) [간단 소스] 안드로이드 웹뷰 브릿지 통신 수행 시 JSONObject 전송 방법 - App To Web Send Object 본문

Android

811. (Android/Java) [간단 소스] 안드로이드 웹뷰 브릿지 통신 수행 시 JSONObject 전송 방법 - App To Web Send Object

투케이2K 2024. 7. 12. 16:16
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[Java : 소스 코드]

        // -----------------------------------------
        // [안드로이드에서 자바스크립트 호출]
        // -----------------------------------------
        public void receiveObject(JSONObject jsonObject){
            try {
                S_Log._F_(A_Webview.this, S_FinalData.LOG_Webview_Aos_To_Js, new String[]{
                        "설 명 :: " + "JSON Object 정보 전송",
                        "Send Data :: " + String.valueOf(jsonObject)
                });

                // -----------------------------------------
                // TODO [jsonObject 전송 실시]
                // -----------------------------------------
                main_webview.loadUrl("javascript:receiveObject("+jsonObject+")");
                // -----------------------------------------
            }
            catch (Exception e){
                S_Log._printStackTrace_(A_Webview.this, S_FinalData.LOG_BUG_STATE, null, e);
            }
        }

 


[Web : 소스 코드]

        // [모바일 >> 자바스크립트 호출]
        function receiveObject(inputJson){
            console.log("");
            console.log("=========================================");
            console.log("[MOBILE >> JS] : [receiveObject] : [start]");
            console.log("----------------------------------------");
            console.log("[설명] : Json 함수 호출");
            console.log("----------------------------------------");
            console.log("[TYPE] : " + String(typeof inputJson).toLowerCase());
            console.log("----------------------------------------");
            console.log("[INPUT] : " + JSON.stringify(inputJson));
            console.log("=========================================");
            console.log("");


            // [로직 처리 실시]
            try {

                // [사전 인풋 값 널 체크 수행 실시]
                if (inputJson != null && String(typeof inputJson).toLowerCase() != "undefined" && JSON.stringify(inputJson) != "null") {
                }
                else {
                    console.log("");
                    console.log("=========================================");
                    console.log("[MOBILE >> JS] : [receiveObject] : [Error] : 인풋 값 널 데이터 에러");
                    console.log("=========================================");
                    console.log("");

                    alert("[receiveObject] : [ERROR] : [INPUT DATA IS NULL]");
                    return;
                }


                // [접속 한 디바이스 확인 실시]
                var uagent = navigator.userAgent.toLowerCase();
                var android_agent = uagent.search("android");
                var iphone = uagent.search("iphone");
                var ipad = uagent.search("ipad");


                // [접속 디바이스 분기 처리 json 데이터 확인 실시]
                if (android_agent > -1 || iphone > -1 || ipad > -1) {
                    console.log("");
                    console.log("=========================================");
                    console.log("[MOBILE >> JS] : [receiveObject] : [Logic] : Android");
                    console.log("=========================================");
                    console.log("");

                    // [전달 받은 데이터 확인]
                    var result = "\n\n";
                    result += "Type : " + String(typeof inputJson).toLowerCase() + "\n\n";
                    result += "JSON.stringify : " + JSON.stringify(inputJson) + "\n\n";

                    // [팝업창 표시]
                    alert(result);
                }
                else {
                    console.log("");
                    console.log("=========================================");
                    console.log("[MOBILE >> JS] : [receiveObject] : [Logic] : PC");
                    console.log("=========================================");
                    console.log("");

                    alert('[PC] 환경에서는 자바스크립트 통신 테스트 확인 할 수 없습니다.');
                    return;
                }

            }
            catch (error){

                // [에러 발생 내용 확인]
                console.error("");
                console.error("=========================================");
                console.error("[MOBILE >> JS] : [receiveObject] : [Exception]");
                console.error("--------------------------------------");
                console.error("[all error] : " + error);
                console.error("--------------------------------------");
                console.error("[error stack] : " + error.stack);
                console.error("=========================================");
                console.error("");


                // [에러 팝업창 표시]
                alert("[MOBILE >> JS] : [receiveObject] :: [Exception] :: " + error);

            }

        };
 

[결과 출력]


 
반응형
Comments