C2DM을 이용하고 있습니다.
C2DM에서 메세지를 받으면.. 팝업을 띄우는 브로드캐스트 리시버를 만들었습니다.
정상 종료일때는 문제가 없는데...(로직상 처리를 해주기때문에...)
강제 종료 했을때는... 이 리시버가 계속 살아있더라구요~!
그때문에...
앱을 강제종료 후에도 메세지를 받으면... 로직데로 리시버가 작동 되기 때문에 팝업이 뜨려 합니다.
문제는 실행된 앱이 없으니 팝업을 띄울때 에러가 발생 한다는 겁니다.
그래서...
앱이 종료된 상태면... 리시버를 받아도 팝업을 안띄우려 하는데요... 어떻게 해야 할까요?
지금까지 해본 방법은..
ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> processes = manager.getRunningAppProcesses();
로 프로세스 이름을 가져와 판단해서 처리 하려 했으나 브로드캐스트가 실행되면서 해당 프로세스도 같이 떠버리기에 의미가 없더라구요
고수님들 방법좀 알려 주세요~!
잘 부탁 합니다~!
@아즈라엘
네 맞습니다 리시버를 manifest에서 등록했습니다.
자바소스상에서 등록하는 방법도 있나 보군요... 그건 어케하는거죠??
음~!
찾아보겠습니다.
감사합니다~!
아~! 잘 안되네요~! <receiver> 를 자바에서 등록하려 는데... 이리 어렵나요?
메니페스트에 아래와 같이 등록이 되어 있습니다. 잘~~ 실행 됩니다.
문제는 이를 java 상에서 등록하려 하는데.. 잘 안되네요 ㅠ.ㅠ
<!-- C2DM -->
<receiver
android:name="com.Project명.c2dm.C2DMReceiver"
android:permission="com.google.android.c2dm.permission.SEND"
>
<!--실제 메시지를 수신한다.-->
<intent-filter>
<action
android:name="com.google.android.c2dm.intent.RECEIVE"/>
<category
android:name="com.Project명.main"/>
</intent-filter>
<!-- 등록 ID를 수신한다. -->
<intent-filter>
<action
android:name="com.google.android.c2dm.intent.REGISTRATION"/>
<category
android:name="com.Project명.main"/>
</intent-filter>
</receiver>위의 소스를 주석 처리 하고
IntentFilter filler = new IntentFilter("com.google.android.c2dm.intent.RECEIVE");
C2DMReceiver c2dmRec = new C2DMReceiver();
registerReceiver(c2dmRec, filler);
이렇게 추가를 했는데... 소스상 에러는 없으나.. 실행이 안됩니다. 이렇게 등록하는게 아닌가요??
안드로이드 기초가 없다보니...쩝~!
고수님들 한수 부탁 드리겠습니다.
C2DMReceiver 에 onReceive 가 구현되어 있겠지요?
http://developer.android.com/reference/android/content/BroadcastReceiver.html




manifest.xml 쪽에 등록해서 그런거 아닐까요?
java 소스 상에서 registerReceiver 등록하고 해제 하는 방법도 괜찮을거 같은데요..