2013-11-09 5 views
0

TIME_TICK 동작에 응답하는 간단한 브로드 캐스트 수신기를 작성했습니다.TIME_TICK 동작이 브로드 캐스트 수신기를 호출하지 않습니다.

매니페스트 파일에 액션을 추가하면 등록 된 수신기를 호출하지 않지만 자바 코드에 수신기를 등록하면 호출됩니다. 간단한 수신 방법입니다. 매니페스트 파일에 대한

public class mybroad extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context arg0, Intent arg1) { 
     // TODO Auto-generated method stub 
     Log.v("got", "broadcasted"); 
     Toast.makeText(arg0, "hurray broadcast got", Toast.LENGTH_LONG).show(); 


    } 

} 

수신기 태그 나는 다음과 같은 코드로 작동 할 때 친절이 매니페스트 파일 등록에서 호출되지 않는 이유를 업데이트

public class broadact extends Activity 
{ 
    IntentFilter ii; 
    mybroad mb; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.mybroad); 
    ii=new IntentFilter("android.intent.action.TIME_TICK"); 
    mb=new mybroad(); 

} 
@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    super.onResume(); 
    registerReceiver(mb, ii); 
} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    unregisterReceiver(mb); 
} 

을하고있다

<receiver android:name="com.example.chapbasic.mybroad" > 
      <intent-filter> 
       <action android:name="android.intent.action.TIME_TICK"></action> 
      </intent-filter> 
     </receiver> 

. 감사합니다.

답변

3

친절하게도 해당 문서를 살펴보십시오.

매니페스트에 선언 된 구성 요소를 통해 수신 할 수 없으며 명시 적으로이 메시지를 Context.registerReceiver()에 등록해야만 수신 할 수 있습니다.

그래서 매니페스트 파일을 통해 수행 할 때 수신 할 수없는 이유입니다. 감사합니다.

관련 문제