2011-03-14 17 views
2

시스템에서 알림을받을 때 서비스와 통신 할 수 있도록 Service에서 IBinder을 얻으려고합니다. 내 onReceive() 메서드에서 나는 peekService()을 호출하고 있지만 null 참조가 나타납니다.BroadcastReceiver peekService() null을 반환합니다.

startService을 사용하여 Dianne 및 Mark의 https://groups.google.com/forum/#!topic/android-developers/yiq_XIzFoS4에서 대답을 읽었지만 내 서비스에는 인터페이스가 있으며 나는 peekService이 작동해야한다고 생각하지만 그렇지 않습니다.

BroadcastReceiver에서 서비스를 살펴볼 권한이 필요합니까? 다른 뭔가가 필요합니까? 서비스가 실행 중이지만 바인더를 가져올 수는 없습니다.

답변

2

통신이 BroadcastReceiver -> Service ... 인 경우 startService()를 사용하여 데이터를 Intent 's Bundle에 추가하여 전달합니다.

귀하의 BroadcastReceiver가 서비스 (또는 해당 IBinder)에 질문해야한다고 생각합니다. 이 경우 peekService를 사용합니다. peekService를 문지르는 것은 서비스가 시작되지 않고 바인드 된 경우 null을 반환한다는 것입니다.

답변은 브로드 캐스트를 받기 전에 서비스가 시작되고 바인딩되었는지 확인하는 것입니다. 이를 달성하는 방법은 특정 애플리케이션에 따라 달라지며 다양합니다.

당신이 들여다보고있는 서비스가 응용 프로그램 (동일한 APK)의 일부인 경우 특별한 권한이 필요하지 않습니다.

관련 문제