2014-04-28 5 views
4

로컬 방송 수신기를 사용하려고합니다.Android - 로컬 브로드 캐스트 수신기를 사용하는 방법?

1) Iwould 일이 뭔가처럼, 나는 클래스를 생성 한 액티비티에서 - - 수행하기 위해

는 그래서 "다음 단계를 완료했습니다

private class NewGroupReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     Log.d("The group ", "GOT IN THE RECIVING"); 
     Toast.makeText(this, "Working",Toast.LENGTH_SHORT).show(); 
    } 

} 

2) 뭔가

무슨 일이 있었있을 때 내가 알고 다음 코드를 사용했습니다

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    NewGroupReceiver receiver = new NewGroupReceiver(); 

    //the intent filter will be action = "com.example.demo_service.action.SERVICE_FINISHED" 
    IntentFilter filter= new IntentFilter("com.example.apps.action.NEW_GROUP"); 

    // register the receiver: 
    registerReceiver(receiver, filter); 
} 

3) 서비스 클래스에서 - 같은 활동에 나는 수신기를 만들려면 다음 코드를 사용했습니다

Intent resultsIntent=new Intent("com.example.apps.action.NEW_GROUP"); 

LocalBroadcastManager localBroadcastManager =LocalBroadcastManager.getInstance(this); 

localBroadcastManager.sendBroadcast(resultsIntent); 

지금 문제가 내가 알고 싶은 것은이 때 발생하는 것입니다 - 나는 내가 3 단계에서 사용했던 코드로 얻을 그것의 참조하지만 브로드 캐스트 리시버에 들어갈 것 doesen't - 1 단계 코드.

내가 여기 잘못 생각하면 어떨까요? 도움 주셔서 감사합니다.

+0

당신이 활동이기 때문에, 문맥을 통해 방송을 전송하려고; this.sendBroadcast (resultIntent); – zgc7009

+0

3 단계의 코드가 'Service'클래스에 있습니다. – 4this

+0

은 여전히 ​​서비스에서이 방식으로 작동해야합니다. – zgc7009

답변

11

LocalBroadcastManager을 사용하여 요청을 보내지 만 수신자를 "글로벌"인 텐트에 등록합니다. 당신은 수신기를 등록하거나 애플리케이션 컨텍스트에 브로드 캐스트를 보낼 LocalBroadcastManager를 사용해야 중 하나

2 단계

LocalBroadcastManager.getInstance(this).registerReceiver (receiver, filter); 
+0

이것이 사실임을 확인하는 문서를 참조 할 수 있습니까? 나는. LocalBroadcastManager를 통해 전송 된 브로드 캐스트는 BroadcastReceiver가 동일한 애플리케이션에 있더라도 'Context.registerReceiver()'를 통해 등록 된 BroadcastReceiver가 수신하지 못합니다. 나는 이것에 대한 확인을 찾고 있었지만 문서는 실제로 말하지 않는 것으로 보인다. – LarsH

+1

@ LarsH 불행히도 아니지만 2014 년 당시의 경험으로 볼 때 – JohnnyAW

관련 문제