2013-11-09 26 views
0

我已經寫了一個簡單的廣播接收器來響應TIME_TICK操作。TIME_TICK操作不調用廣播接收器

當我在清單文件中添加動作時,它不會調用已註冊的接收器,但是當我在java代碼中註冊接收器時,它將被調用。 我有一個簡單的接收方法。

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(); 


    } 

} 

的清單文件接收標籤

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

,當我用下面的代碼運行,它正在

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); 
} 

請更新爲什麼它沒有被從清單文件註冊調用。 謝謝

回答

3

請仔細閱讀說明文件。

您無法通過在清單中聲明的​​組件收到此通知,只能通過Context.registerReceiver()明確註冊。

這就是您在通過清單文件進行操作時無法收到它的原因。 感謝