투케이2K

842. (Android/Java) [유틸 파일] goSamsungBrowser : 삼성 브라우저 사용해 외부 링크 이동 실시 본문

Android

842. (Android/Java) [유틸 파일] goSamsungBrowser : 삼성 브라우저 사용해 외부 링크 이동 실시

투케이2K 2024. 8. 17. 17:54

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

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

        /**
         * // -----------------------------------------
         * [goSamsungBrowser 메소드 설명]
         * // -----------------------------------------
         * 1. getLaunchIntentForPackage 사용해 앱 설치 여부 확인 및 외부 링크 이동 실시
         * // -----------------------------------------
         * 2. 호출 방법 : C_MoveApp.goSamsungBrowser(A_Main.this, "https://www.naver.com");
         * // -----------------------------------------
         * 3. 로 직 : 삼성 앱이 설치된 경우 삼성 브라우저 실행 / 삼성 브라우저가 설치되지 않은 경우 일반 브라우저 실행
         * // -----------------------------------------
         * 4. TODO [중요] AndroidManifest.xml 파일에서 queries >> package 등록 필요 (com.sec.android.app.sbrowser)
         * // -----------------------------------------
         * */


        // [크롬 브라우저 패키지명]
        final String packageNames = "com.sec.android.app.sbrowser";


        // [URL 주소 공백 제거 실시]
        String urlParse = String.valueOf(url);
        urlParse = urlParse.trim();
        urlParse = urlParse.replaceAll(" ","");


        // [사전 주소가 널인지 체크 실시]
        if (C_Util.stringNotNull(urlParse) == true && urlParse.startsWith("http") == true){
        }
        else { // [주소가 널인 경우]
            // ===============================================================
            S_Log._F_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실패", new String[]{
                    "ERROR :: " + "주소 null 널 임",
                    "URL :: " + String.valueOf(urlParse)
            });
            // ===============================================================
            return;
        }


        // [URL 형식으로 파싱 가능한지 확인 실시]
        try {
            URL tempUrl  = new URL(urlParse);
        }
        catch (Exception e){
            // S_Log._printStackTrace_(mContext, S_FinalData.LOG_BUG_STATE, null, e);
            // ===============================================================
            S_Log._F_(mContext, "삼성 브라우저 사용해 외부 링크 이동 실패", new String[]{
                    "ERROR :: " + "URL 주소 형식 아님 >> 인코딩 , 이스케이프 문자 체크 필요",
                    "URL :: " + String.valueOf(urlParse)
            });
            // ===============================================================

            // [종료 실시]
            return;
        }


        // [url 주소 삽입]
        final String urlData = urlParse;


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

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

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

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

            // [일반 기본 설정된 브라우저로 이동]
            Intent go = new Intent(Intent.ACTION_VIEW);
            go.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            go.setData(Uri.parse(urlData));
            mContext.startActivity(go);
        }
    }

 

[결과 출력]

 

 

반응형
Comments