안드로이드 개발 질문/답변
(글 수 45,052)
개발중인 앱에서 이미 설치되어있는 앱을 실행 후 해당 앱 종료시에 원래 화면으로 돌아오게 하고 싶습니다.
Intent intent = getPackageManager().getLaunchIntentForPackage("패키지명");
startActivity(intent);
위와 같은 방법을 이용하여 다른 앱의 메인을 띄우는 것은 별 문제 없이 가능하였습니다만
문제는 실행된 앱 종료 후에 그 앱을 실행한 제가 만든 앱으로 돌아오질 않더군요
실행
A앱 (개발중인 앱) -> B앱 (기존앱)
<-
종료
위와 같은 식으로 B앱의 종료시에 실행되어있던 A앱으로 돌아오고 싶습니다 방법이 없을까요?
내용 추가
대상 앱에서 finish()로 종료할 경우에는 원하는 대로 동작하게 됩니다.
위와 같은 경우가 아닐 경우의 해결책을 알고 싶습니다.
getPackageManager().getLaunchIntentForPackage() API는 항상 new task로 새로운 액티비티를 실행시키도록 구현되어 있습니다.
따라서, 이 API를 사용하지 마시고,
Intent intent = new Intent();
intent.setClassName(패키지명, 액티비티클래스명);
startActivity(intent);
형태로 사용하시면 됩니다.
메인 액티비티를 얻기 힘든 경우라면
Intent intent = getPackageManager().getLaunchIntentForPackage(~) ;
intent.setFlags(0); // New Task 플래그를 날림
startActivity(intent);
형태로 getPackageManager().getLaunchIntentForPackage API를 이용하시면 됩니다.
그리고, 일부앱들은 자신이 종료할 때, 강제로 moveTaskToBack를 호출해서 강제로 모두 백그라운드로 내려버리기도 합니다.. 이 경우에는 어쩔 수 없습니다.