본문 바로가기
IT기술(코딩)/안드로이드스튜디오

안드로이드 스튜디오 앱에서 다른 앱 열기 안열릴때, 앱 있는데 안열릴때2 해결방법 찾음

by 크리에이트매이커 2021. 12. 6.
반응형

안녕하세요 여러분~ 이전 글에 이어서 설치된 앱이 있음에도 불구하고 앱이 List에 저장이 안되는 현상에 대해 해결방법을 알아보도록 하겠습니다.

 

결론을 말씀드리면, List에 설치된 앱이 되 저장이 안되는지는 원인을 못찾았습니다.

하지만, 설치된 앱을 실행하는 코드를 새로 알아냈습니다.

Intent launchapp = context.getPackageManager().getLaunchIntentForPackage(packagename);
        launchapp.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        context.startActivity(launchapp);

이렇게 하면 설치된 앱이라면 실행이 될것입니다.

혹시 앱이 설치되지 않았을때, 에러 발생을 막고 앱 설치 페이지로 이동을 원하시면

 try {
                  LaunchApp(Choicedelivery.this, packagename);
                  Log.d("TAG", "Choicedelivery App is on the phone");
              }catch (Exception e) {
                  GotoInstall(Choicedelivery.this, packagename);
                  Log.d("TAG", "Choicedelivery App is not on the phone");
              }
              
              
              
              public static void LaunchApp (Context context, String packagename){
        Intent launchapp = context.getPackageManager().getLaunchIntentForPackage(packagename);
        launchapp.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        context.startActivity(launchapp);
    }

    public static void GotoInstall (Context context, String pakagename ){
        String url = "market://details?id="+pakagename;
        Intent gotoplaystore = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        gotoplaystore.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(gotoplaystore);
    }

이런식으로 예외처리를 하여 사용하시는 것도 좋을것 같습니다.

 

여기서 중요한점은, !!

addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

이 부분입니다. 여기서 , 만약 Intent.FLAG_ACTIVITY_NEW_TASK 만 선언하면, 앱이 설치돼있어도 안드로이드 앱 실행 관련 기능에서 에러를 일으킵니다. 그래서 Intnent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED 인자도 or 해주면 정상적으로잘 동작하는것을 확인했습니다.~~

 

그럼 여러분들 즐 개발 해주세요~ 삶의 더 풍요로운 기술으 위해~

반응형