2011-03-07 3 views
4

.. 의도에 대한 setData는 sendBroadcast가 작동하지 않도록합니까? 나는 다음과 같은 행동을 듣고 등록 된 브로드 캐스트 리시버가

public static final String MY_ACTION = "com.blah.intent.action.DOSOMETHING"; 

그리고 나는이를 사용하는 경우 내 코드에서 나는 방송 전송 나는 경우, 미세 수신

Intent intent = new Intent(MY_ACTION); 
sendBroadcast(intent); 

이 나는 broadcas을 SetData를하는 경우

Uri uri = Uri.parse("/sdacrd/myfile"); 
intent.setData(uri); 

.. 다음 행을 추가하여 브로드 캐스트를 전송하기 전에 사항 setData 를 사용하여 열린 우리당을 추가 t는받지 못한다.

인 텐트의 데이터 설정으로 인해 방송이 작동하지 않는 이유는 누구나 설명 할 수 있습니까?

답변

4

Android는 ACTION뿐만 아니라 데이터 및 스키마의 유형에도 적합합니다. 수신자는 IntentFilter에서 addDataSchema() 또는 addDataType()을 호출하여이 유형을 수신 할 수 있음을 알려야합니다. String을 보내고 싶다면, 엑스트라를 사용하지 않으시겠습니까?

+0

그래, 그냥 시작하는 문자열을 사용했지만 문자열을 보낼 때 Uri가 setData를 사용하는 것이 합리적이라고 생각했습니다. – Azalar

+0

확실하지 않지만 데이터로 사용하면 MIME과 같이 해당 데이터 유형을 지정하십시오. 따라서 엑스트라를 사용하는 것이 더 간단합니다. – damluar

+1

예 데이터 유형이 고정이 설정. – Azalar

1

나는 damluar에 동의합니다.

Android 개발자 : 일치시킬 새로운 인 텐트 데이터 스키마를 추가하십시오. 스킴이 필터에 포함되어있는 경우 인 텐트의 데이터는 이러한 스키마 중 하나이거나 일치하는 데이터 유형이어야합니다. 스키마가 포함되어 있지 않으면 인 텐트는 데이터가없는 경우에만 일치합니다.

인과 관계에 데이터를 추가하는 경우 데이터 유형 또는 스키마를 의도 필터에 추가해야합니다.

관련 문제