투케이2K

520. (kotlin/코틀린) [유틸 파일] goSamsungBrowser : 삼성 브라우저 사용해 외부 링크 이동 실시 본문

Kotlin

520. (kotlin/코틀린) [유틸 파일] goSamsungBrowser : 삼성 브라우저 사용해 외부 링크 이동 실시

투케이2K 2024. 8. 20. 21:02

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Kotlin

 

[소스 코드]

 

        // ----------------------------------------------------------------------------------
        // TODO [SEARCH FAST] : [goSamsungBrowser] : 삼성 브라우저 사용해 외부 링크 이동 실시
        // ----------------------------------------------------------------------------------
        fun goSamsungBrowser(mContext: Context, url: String) {

            /**
             * // -----------------------------------------
             * [goSamsungBrowser 메소드 설명]
             * // -----------------------------------------
             * 1. 삼성 브라우저 사용해 외부 링크 이동 실시
             * // -----------------------------------------
             * 2. 호출 방법 : C_MoveApp.goSamsungBrowser(this@A_Intro, "https://www.naver.com")
             * // -----------------------------------------
             * 3. 로 직 : 삼성 앱이 설치된 경우 삼성 브라우저 외부 링크 이동 / 아니면 기본 URL 외부 링크 이동 실시
             * // -----------------------------------------
             * 4. TODO [중요] AndroidManifest.xml 파일에서 queries >> package 등록 필요 (com.sec.android.app.sbrowser)
             * // -----------------------------------------
             * */


            // [URL 주소 공백 제거 실시]
            val urlData = url.replace(" ","")


            // [사전 주소 널 여부 체크]
            if (C_Util.stringNotNull(urlData) == true){
            }
            else { // [주소가 널인 경우]
                // ===============================================================
                S_Log._F_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실패", arrayOf(
                    "ERROR :: " + "주소 null 널 임",
                    "URL :: " + urlData.toString()
                ))
                // ===============================================================
                return
            }


            // [사전 주소 http 시작 체크]
            if (urlData.startsWith("http://") == true || urlData.startsWith("https://") == true){
            }
            else {
                // ===============================================================
                S_Log._F_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실패", arrayOf(
                    "ERROR :: " + "URL 주소 형식 아님 >> http 시작 체크 필요",
                    "URL :: " + urlData.toString()
                ))
                // ===============================================================
                return
            }


            // [크롬 특정 패키지 명 변수 선언]
            val packageNames = "com.sec.android.app.sbrowser"


            // [외부앱이 설치되었는지 확인]
            try {

                // [특정 패키지 명이 앱에 설치 되어 있는지 확인]
                val existPackage = mContext.packageManager.getLaunchIntentForPackage(packageNames)
                if (existPackage != null) { // [설치되어 있는 경우]
                    // ===============================================================
                    S_Log._F_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실시 [삼성 브라우저 설치 확인]", arrayOf(
                        "찾을려는 앱 :: $packageNames",
                        "상 태 :: " + "외부 앱 설치 됨",
                        "로 직 :: " + "삼성 브라우저 사용해 외부 링크 열기 수행",
                        "URL :: $urlData"
                    ))
                    // ===============================================================

                    // [삼성 브라우저를 통해 외부 링크 호출]
                    val intent = Intent(Intent.ACTION_VIEW)
                    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
                    intent.setPackage(packageNames) // [크롬 브라우저 지정]
                    intent.data = Uri.parse(urlData) // [공백 제거]
                    mContext.startActivity(intent)
                }
                else { // [설치되지 않은 경우]
                    // ===============================================================
                    S_Log._F_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실시 [삼성 브라우저 설치 확인 실패]", arrayOf(
                        "찾을려는 앱 :: $packageNames",
                        "상 태 :: " + "외부 앱 설치 안됨",
                        "로 직 :: " + "일반 브라우저 사용해 외부 링크 열기 수행",
                        "URL :: $urlData"
                    ))
                    // ===============================================================

                    // [일반 브라우저 외부링크 이동 실시]
                    val go = Intent(Intent.ACTION_VIEW)
                    go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
                    go.data = Uri.parse(urlData) // [공백 제거]
                    mContext.startActivity(go)
                }
            }
            catch (e: ActivityNotFoundException) {
                // TODO [이동할 패키지 명을 찾이 못한 경우]
                // ===============================================================
                S_Log._printStackTrace_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실시 [삼성 브라우저 설치 확인 실패]", arrayOf(
                    "찾을려는 앱 :: $packageNames",
                    "상 태 :: " + "ActivityNotFoundException",
                    "로 직 :: " + "일반 브라우저 사용해 외부 링크 열기 수행",
                    "URL :: $urlData"
                ), e)
                // ===============================================================

                // [일반 브라우저 외부링크 이동 실시]
                val go = Intent(Intent.ACTION_VIEW)
                go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
                go.data = Uri.parse(urlData) // [공백 제거]
                mContext.startActivity(go)
            }
            catch (e: Exception) {
                // ===============================================================
                S_Log._printStackTrace_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실시 [삼성 브라우저 설치 확인 실패]", arrayOf(
                    "찾을려는 앱 :: $packageNames",
                    "상 태 :: " + "Exception",
                    "로 직 :: " + "일반 브라우저 사용해 외부 링크 열기 수행",
                    "URL :: $urlData"
                ), e)
                // ===============================================================

                // [일반 브라우저 외부링크 이동 실시]
                val go = Intent(Intent.ACTION_VIEW)
                go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION)
                go.data = Uri.parse(urlData) // [공백 제거]
                mContext.startActivity(go)
            }
        }

 

반응형
Comments