안드로이드 개발 질문/답변
(글 수 45,052)
BroadcastReceiver 를 이용해서 C2DM을 이용한 어플을 만들고 있습니다.
그런데 궁금한것은 BroadcastReceiver에서 Notification을 통해 알려주는것은 많은 예제가 있어 쉽게
구현이 되는데 Notification을 사용하지 않고 어플의 다른 액티비티의 함수를 실행하고 싶다는 것입니다.
물론
클래스명 a = new 클래스명();
a.함수명(context,c2dm_msg);
과 같이해서 메시지를 넘겨주는것 정도는 되는데
제가 하고 싶은것은 해당클래스내의 함수를 실행하여 다른작업 - 예를들면 레이아웃을 숨기거나 하는등 -
의 작업은 할수 없는가 하는 점입니다.
실행해 보면 코드상의 에러는 없는데 푸시를 받는 순간 다음과 같은 에러가 찍힙니다.
해당 클래스의 함수를 자유롭게 쓸수는 없는건가요?
04-28 17:44:09.791: ERROR/AndroidRuntime(17748): java.lang.RuntimeException: Unable to start receiver com.*.*.
*.C2dm_BroadcastReceiver: java.lang.ClassCastException: android.app.ReceiverRestrictedContext
호출하고자 하는 액티비티의 메서드를 public 이나 protected 접근자로 설정하고
액티비티의 context를 저장한 스택틱 멤버를 추가합니다.
---
public static Context mContext;
onCreate() {
...
mContext = this;
...
}
-----
그리고 접근할 때는
((액티비티 클래스명)액티비티.mContext).메서드(...);
형식으로 접근 가능합니다.