투케이2K

246. (AndroidStudio/android/java) 외부 앱 실행 및 스키마 (scheme) 이동 실시 - 빌드 타겟 31 대응 본문

Android

246. (AndroidStudio/android/java) 외부 앱 실행 및 스키마 (scheme) 이동 실시 - 빌드 타겟 31 대응

투케이2K 2022. 1. 5. 08:57

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : java

 

[소스코드 : 외부앱 이동]

    // TODO [외부 앱이 설치되어 있으면 메인 실행, 아니면 마켓이동 실시 메소드]
    public static void goAppRunNew(Context mContext, final String packageNames){

        // [사전 패키지명이 널인지 체크 실시]
        if (packageNames != null && packageNames.length()>0
                && !packageNames.equals("") && !packageNames.contains("null")){
        }
        else { // [패키지 명이 널인 경우]
            Log.i("---","---");
            Log.e("//===========//","================================================");
            Log.i("","\n"+"[C_MoveApp >> goAppRunNew() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기 실패]]");
            Log.i("","\n"+"[error :: "+"패키지명 null 널 임"+"]");
            Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
            Log.e("//===========//","================================================");
            Log.i("---","---");
            return;
        }


        // TODO [외부앱이 설치되었는지 확인]
        try {
            // [특정 패키지 명이 앱에 설치 되어 있는지 확인]
            Intent existPackage = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
            if (existPackage != null) { // 설치되어 있는 경우
                Log.i("---","---");
                Log.w("//===========//","================================================");
                Log.i("","\n"+"[C_MoveApp >> goAppRunNew() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기]]");
                Log.i("","\n"+"[찾을려는 앱 :: "+packageNames+"]");
                Log.i("","\n"+"[상태 :: "+"외부 앱 설치 됨"+"]");
                Log.w("//===========//","================================================");
                Log.i("---","---");

                // TODO [인텐트 이동]
                Intent intent = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                mContext.startActivity(intent);
            }
            else { // 설치되지 않은 경우
                Log.i("---","---");
                Log.e("//===========//","================================================");
                Log.i("","\n"+"[C_MoveApp >> goAppRunNew() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기]]");
                Log.i("","\n"+"[찾을려는 앱 :: "+packageNames+"]");
                Log.i("","\n"+"[상태 :: "+"외부 앱 설치 안됨"+"]");
                Log.e("//===========//","================================================");
                Log.i("---","---");

                // TODO [구글 플레이스토어 이동]
                Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
                marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
                mContext.startActivity(marketLaunch);
            }
        }
        catch (ActivityNotFoundException e) {
            // TODO [이동할 패키지 명을 찾이 못한 경우]
            Log.i("---","---");
            Log.e("//===========//","================================================");
            Log.i("","\n"+"[C_MoveApp >> goAppRunNew() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기 실패]]");
            Log.i("","\n"+"[찾을려는 앱 :: "+packageNames+"]");
            Log.i("","\n"+"[로 직 :: 구플 플레이스토어 마켓 이동 수행 실시]");
            Log.i("","\n"+"[ActivityNotFoundException :: "+String.valueOf(e.getMessage())+"]");
            Log.e("//===========//","================================================");
            Log.i("---","---");

            // TODO [구글 플레이스토어 이동]
            Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
            marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
            mContext.startActivity(marketLaunch);
        }
        catch (Exception e){
            Log.i("---","---");
            Log.e("//===========//","================================================");
            Log.i("","\n"+"[C_MoveApp >> goAppRunNew() :: 외부 앱 실행 및 마켓 이동 실시 [외부 열기 에러]]");
            Log.i("","\n"+"[찾을려는 앱 :: "+packageNames+"]");
            Log.i("","\n"+"[Exception :: "+String.valueOf(e.getMessage())+"]");
            Log.e("//===========//","================================================");
            Log.i("---","---");
        }
    }
 

[소스코드 : 스키마 이동]

    // TODO [외부 앱이 설치되어 있으면 스키마 실행, 아니면 마켓이동 실시 메소드]
    public static void goAppSchemeMoveNew(Context mContext, final String packageNames, final String scheme){

        // [사전 패키지명이 널인지 체크 실시]
        if (packageNames != null && packageNames.length()>0
                && !packageNames.equals("") && !packageNames.contains("null")){
        }
        else { // [패키지 명이 널인 경우]
            Log.i("---","---");
            Log.e("//===========//","================================================");
            Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveNew() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기 실패]]");
            Log.i("","\n"+"[error :: "+"패키지명 null 널 임"+"]");
            Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
            Log.i("","\n"+"[scheme :: "+String.valueOf(scheme)+"]");
            Log.e("//===========//","================================================");
            Log.i("---","---");
            return;
        }


        // [사전 스키마 명이 널인 체크 실시]
        if (scheme != null && scheme.length()>0
                && !scheme.equals("") && !scheme.contains("null")){
        }
        else { // [패키지 명이 널인 경우]
            Log.i("---","---");
            Log.e("//===========//","================================================");
            Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveNew() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기 실패]]");
            Log.i("","\n"+"[error :: "+"스키마 null 널 임"+"]");
            Log.i("","\n"+"[packageNames :: "+String.valueOf(packageNames)+"]");
            Log.i("","\n"+"[scheme :: "+String.valueOf(scheme)+"]");
            Log.e("//===========//","================================================");
            Log.i("---","---");
            return;
        }


        // TODO [외부앱이 설치되었는지 확인]
        try {
            // [특정 패키지 명이 앱에 설치 되어 있는지 확인]
            Intent existPackage = mContext.getPackageManager().getLaunchIntentForPackage(packageNames);
            if (existPackage != null) { // 설치되어 있는 경우
                Log.i("---","---");
                Log.w("//===========//","================================================");
                Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveNew() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기]]");
                Log.i("","\n"+"[찾을려는 앱 :: "+packageNames+"]");
                Log.i("","\n"+"[스키마 데이터 :: "+scheme+"]");
                Log.i("","\n"+"[상태 :: "+"외부 앱 설치 됨"+"]");
                Log.w("//===========//","================================================");
                Log.i("---","---");

                // TODO [형식] : testScheme://testHost?name=kwon&idno=1234
                String url = String.valueOf(scheme);
                Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse(url));
                intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                mContext.startActivity(intent);
            }
            else { // 설치되지 않은 경우
                Log.i("---","---");
                Log.e("//===========//","================================================");
                Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveNew() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기]]");
                Log.i("","\n"+"[찾을려는 앱 :: "+packageNames+"]");
                Log.i("","\n"+"[스키마 데이터 :: "+scheme+"]");
                Log.i("","\n"+"[상태 :: "+"외부 앱 설치 안됨"+"]");
                Log.e("//===========//","================================================");
                Log.i("---","---");

                // TODO [구글 플레이스토어 이동]
                Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
                marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
                mContext.startActivity(marketLaunch);
            }
        }
        catch (ActivityNotFoundException e) {
            // TODO [이동할 패키지 명을 찾이 못한 경우]
            Log.i("---","---");
            Log.e("//===========//","================================================");
            Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveNew() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기 실패]]");
            Log.i("","\n"+"[찾을려는 앱 :: "+packageNames+"]");
            Log.i("","\n"+"[스키마 데이터 :: "+scheme+"]");
            Log.i("","\n"+"[로 직 :: 구플 플레이스토어 마켓 이동 수행 실시]");
            Log.i("","\n"+"[ActivityNotFoundException :: "+String.valueOf(e.getMessage())+"]");
            Log.e("//===========//","================================================");
            Log.i("---","---");

            // TODO [구글 플레이스토어 이동]
            Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
            marketLaunch.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            marketLaunch.setData(Uri.parse("market://details?id="+packageNames));
            mContext.startActivity(marketLaunch);
        }
        catch (Exception e){
            Log.i("---","---");
            Log.e("//===========//","================================================");
            Log.i("","\n"+"[C_MoveApp >> goAppSchemeMoveNew() :: 외부 앱 스키마 실행 및 마켓 이동 실시 [외부 스키마 열기 에러]]");
            Log.i("","\n"+"[찾을려는 앱 :: "+packageNames+"]");
            Log.i("","\n"+"[스키마 데이터 :: "+scheme+"]");
            Log.i("","\n"+"[Exception :: "+String.valueOf(e.getMessage())+"]");
            Log.e("//===========//","================================================");
            Log.i("---","---");
        }
    }
 

 

반응형
Comments