2013-09-26 3 views
2

새로운 Android 빌드 시스템을 사용하여 LocalBroadcastManager을 사용하여 IntentService에서 Activity으로 알림을 실행하는 중입니다.LocalBroadcastManager는 앱 패키지 이름에 의존합니까?

다음과 같은 제품 맛을 3 가지 앱의 빌드의 일부로 정의했습니다.

productFlavours { 
    london { 
     packageName 'com.example.lo' 
    } 
    dubai { 
     packageName 'com.example.du' 
    } 
} 

이러한 제품 맛을 사용하여 앱을 제작할 때 관리자를 통해 브로드 캐스트가 전송되지 않습니다. 서비스와 활동이 동일한 프로세스에서 실행되고 있음을 확인했습니다.

브로드 캐스트 수신기는 내 활동의 Activity#onCreate 메서드에서 필요에 따라 바인딩되지만 이벤트는 수신하지 않습니다. 또한 활동과 서비스의 프로세스 ID를 인쇄하여 확인했으며 두 프로세스 모두 동일하다고보고하므로 문제가 될 수 없습니다.

테스트로서 제품 맛을 제거하고 앱 매니페스트 파일에 정의 된대로 단일 패키지 이름으로 앱을 제작했습니다. 이제 브로드 캐스트 관리자가 예상대로 작동하는 것 같습니다. 보내려는 의도에 대해서만 나는 행동을 취하고 있습니다.

다른 설정이 필요합니까?

+0

올바른 의도로 수신기를 등록 하시겠습니까? 필터? 아마도 어떤 코드가 나타날 곳을 표시 할 것입니다. – waqaslam

+0

예를 선택하고 인 텐트 필터를 두 번 확인했습니다. 나는 그것을 onCreate 메서드에 등록하고 onDestroy에서 등록을 취소합니다. –

+0

방송을 시작하고 방송하는 데 동일한 컨텍스트를 사용하고 있습니까? LocalBroadcasts가 컨텍스트에 바인딩되어 있기 때문입니다. – waqaslam

답변

1

당신이 보는 경우 source code of LocalBroadcastManager 당신은 당신이 Intent.FLAG_DEBUG_LOG_RESOLUTION (Intent.addFlags(int)를 사용하여) 당신의 Intent 플래그를 주면, 그것은 로그 캣에 매우 유용한 정보를 인쇄 할 것을 볼 수 있습니다 : 당신이하고 맛없는 것을 시도 할 수도 있습니다 그 결과를 비교하여 무엇이 잘못되었는지 확인하십시오.

+0

I 이것으로 주위를 둘러보고 어떤 단서를 던지는지 확인하십시오. –

0

동일한 프로젝트에서 네임 스페이스가 org.cmpny.apporg.cmpny.app.additional입니다. LocalBroadcastManager가 제대로 작동하며 AndroidManifest에서 조정할 필요가 없습니다. (LocalBroadcastManager를 ": 원격"서비스와 함께 사용할 수 없다는 점을 제외하고는 다른 점이 있습니다.)