2015-02-24 71 views
0

工作,我想使用我的BroadcastReceiver服務中,但它不能正常工作。廣播reciever不是從服務

我開始在我的活動onCreate我的服務。然後在服務的onCreate我打電話以下注冊廣播reciever:

IntentFilter filter = new IntentFilter(); 
    registerReceiver(DataUpdateReceiver, filter); 

這裏的廣播接收機我正在嘗試註冊:

private BroadcastReceiver DataUpdateReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     Toast.makeText(context, "Test", Toast.LENGTH_LONG).show(); 

    } 
}; 

然後其他地方的活動,我想調用它,這樣Toast消息就會顯示出來。

  Intent i = new Intent(); 
      sendBroadcast(i); 

但吐司沒有顯示,我也試過記錄,但沒有顯示出來。如果有人可以幫我解決這個問題,我會很感激的。

回答

1

在我看來,你必須指定動作(或行爲),其中火onReceive()方法。像這樣的東西可以幫助你:

IntentFilter filter = new IntentFilter("some_action"); 
registerReceiver(DataUpdateReceiver, filter); 

... 

Intent i = new Intent("some_action"); 
sendBroadcast(i); 
1

聲明對類

public final static String MY_RECEIVER_START = "com.yourcompanyname.appname.MY_RECEIVER_START"; 

private Radio radio; 

的頂部在服務構造

//Initiate our receiver 
    radio = new Radio(); 

    //Activate our recevier 
    context.registerReceiver(radio, new IntentFilter(MY_RECEIVER_START)); 

而且在服務,打造接收機類和方法其中顯示吐司

/** 
* Receiver Class 
* This setup checks for the incoming intent action to be able to 
* attach more messages to one receiver. 
*/ 
private class Radio extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     if (intent.getAction().equals(MY_RECEIVER_START)){ 
      //show toast 


     } 

    } 
} 

從應用的任何位置後發送消息給我們的無線電

context.sendBroadcast(new Intent("com.yourcompanyname.appname.MY_RECEIVER_START"));