투케이2K

557. (Android/Java) [유틸 파일] goGoogleMap : 구글 맵 이동 실시 메소드 (intent setPackage google map) 본문

Android

557. (Android/Java) [유틸 파일] goGoogleMap : 구글 맵 이동 실시 메소드 (intent setPackage google map)

투케이2K 2023. 5. 1. 09:32

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java

 

[소스 코드]

    // -----------------------------------------------------------------------------------------
    // TODO [SEARCH FAST] : [goGoogleMap] : 구글 맵 이동 실시 메소드
    // -----------------------------------------------------------------------------------------
    public static void goGoogleMap(Context mContext, final String geo){

        /**
         * // -----------------------------------------
         * [goGoogleMap 메소드 설명]
         * // -----------------------------------------
         * 1. 구글 맵 이동 실시 메소드
         * // -----------------------------------------
         * 2. 호출 방법 : C_MoveApp.goGoogleMap(A_Main.this, "geo:37.564213,127.001698");
         * // -----------------------------------------
         * 3. 로 직 : 구글 앱이 설치되지 않은 경우 브라우저로 지도 실행 / 설치된 경우 구글 앱으로 지도 실행
         * // -----------------------------------------
         * 4. TODO [중요] AndroidManifest.xml 파일에서 queries >> package 등록 필요
         *
         *     <queries>
         *
         *         <package android:name="com.google.android.apps.maps" />
         *
         *     </queries>
         * // -----------------------------------------
         * */
        
        
        // [패키지 명칭 선언 : 구글 맵]
        String packageNames = "com.google.android.apps.maps";


        // [사전 패키지명이 널인지 체크 실시]
        if (C_Util.stringNotNull(packageNames) == true){
        }
        else { // [패키지 명이 널인 경우]
            // ===============================================================
            S_Log._E_("구글 맵 이동 실시 [외부 열기 실패]", new String[]{
                    "ERROR :: " + "패키지명 null 널 임",
                    "PACKAGE :: " + String.valueOf(packageNames)
            });
            // ===============================================================
            return;
        }


        // [사전 geo 인풋값 널 체크 실시]
        if (C_Util.stringNotNull(geo) == true && geo.startsWith("geo:") == true){
        }
        else { // [데이터가 널이 거나 , 형식이 올바르지 않은 경우]
            // ===============================================================
            S_Log._E_("구글 맵 이동 실시 [외부 열기 실패]", new String[]{
                    "ERROR :: " + "인풋 데이터 geo 데이터 null 널 임 / 데이터 형식이 올바르지 않음",
                    "INPUT :: " + String.valueOf(geo)
            });
            // ===============================================================
            return;
        }


        // [외부앱이 설치되었는지 확인]
        try {
            // [특정 패키지 명이 앱에 설치 되어 있는지 확인]
            Intent existPackage = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
            if (existPackage != null) { // [설치되어 있는 경우]
                // ===============================================================
                S_Log._D_("구글 맵 이동 실시 [외부 열기]", new String[]{
                        "찾을려는 앱 :: " + String.valueOf(packageNames),
                        "INPUT :: " + String.valueOf(geo),
                        "상 태 :: " + "외부 앱 설치 됨",
                        "로 직 :: " + "구글 맵 열기 수행"
                });
                // ===============================================================

                // [구글 맵 이동]
                Uri uri = Uri.parse(geo);
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                intent.setPackage(packageNames);
                mContext.startActivity(intent);
            }
            else { // [설치되지 않은 경우]
                // ===============================================================
                S_Log._E_("구글 맵 이동 실시 [마켓 이동]", new String[]{
                        "찾을려는 앱 :: " + String.valueOf(packageNames),
                        "INPUT :: " + String.valueOf(geo),
                        "상 태 :: " + "외부 앱 설치 안됨",
                        "로 직 :: " + "외부 링크 사용해 맵 실행"
                });
                // ===============================================================

                // [외부 링크 이동]
                Uri uri = Uri.parse(geo);
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                mContext.startActivity(intent);
            }
        }
        catch (ActivityNotFoundException e) {
            // [이동할 패키지 명을 찾이 못한 경우]
            // ===============================================================
            S_Log._E_("구글 맵 이동 실시 [외부 열기 실패]", new String[]{
                    "찾을려는 앱 :: " + String.valueOf(packageNames),
                    "INPUT :: " + String.valueOf(geo),
                    "상 태 :: " + "ActivityNotFoundException",
                    "로 직 :: " + "외부 링크 사용해 맵 실행"
            });
            // ===============================================================

            // [외부 링크 이동]
            Uri uri = Uri.parse(geo);
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            mContext.startActivity(intent);
        }
        catch (Exception e){
            // ===============================================================
            S_Log._E_("구글 맵 이동 실시 [외부 열기 에러]", new String[]{
                    "찾을려는 앱 :: " + String.valueOf(packageNames),
                    "INPUT :: " + String.valueOf(geo),
                    "상 태 :: " + "Exception",
                    "로 직 :: " + "NONE"
            });
            // ===============================================================
        }
    }
 

[결과 출력]

 

D///===========//: ================================================
I/: [LOG :: CLASS PLACE :: com.example.javaproject.C_MoveApp.goGoogleMap(C_MoveApp.java:548)]
I/: ----------------------------------------------------
I/: [LOG :: DESCRIPTION :: 구글 맵 이동 실시 [외부 열기]]
I/: ----------------------------------------------------
I/: [LOG :: 찾을려는 앱 :: com.google.android.apps.maps]
I/: ----------------------------------------------------
I/: [LOG :: INPUT :: geo:37.564213,127.001698]
I/: ----------------------------------------------------
I/: [LOG :: 상 태 :: 외부 앱 설치 됨]
I/: ----------------------------------------------------
I/: [LOG :: 로 직 :: 구글 맵 열기 수행]
D///===========//: ================================================

 

반응형
Comments