IT_Programming/Android_Java

[펌] 잠자는 앱을 깨우자. (FLAG_INCLUDE_STOPPED_PACKAGES)

JJun ™ 2012. 10. 5. 22:15


출처: http://oic.tstore.co.kr/front/community/mentoring/viewMentoring.action?seq=171




[요약]

액티비티를 직접 호출하여 실행하거나 Broadcast을 통해서 호출하여 실행하여도
전혀 반응하지 않는 경우에 사용 하시면 됩니다.


[개념]
Android OS 3.1 부터 Package Manager는 어플리케이션 트랙을 적용하게 되었습니다.
이 어플리케이션 트랙은 다른어플리케이션 또는 백그라운시스템에서 런칭시 
앱이 Stop된 상태 여부에 따라서 실행 여부를 결정하는 동작을 수행합니다.

앱은 최초 설치만 되고 실행되지 않았거나, Manager Application을 통해서
강제 종료된 경우 앱은 Stop된 상태가 됩니다.
이렇게 앱이 Stop된 상태면 다른 어플리케이션이나, BC로 해당 앱을 실행시킬 수 없습니다.
부언설명: http://developer.android.com/sdk/android-3.1.html#launchcontrols

이 제어를 관장하는 것을 인텐트 플래그에서 처리를 합니다.
아래와 같이 두개의 플래그를 지원하는데 기본 설정된 것이 
FLAG_EXCLUDE_STOPPED_PACKAGES  으로 Stop된 앱을 제외하는 것입니다.

FLAG_INCLUDE_STOPPED_PACKAGES 
FLAG_EXCLUDE_STOPPED_PACKAGES

따라서 실행하고자 하는 액티비티를 호출할 때 EXCLUDE대신 INCLUDE 플래그를 사용하시면 됩니다.




[사용방법]


 Intent intent = new Intent(MY_INTENT_ACTION);
 intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
 sendBroadcast(intent);


또는


 Intent intent = new Intent(MY_INTENT_ACTION);
 intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
 startActivity(intent);