2014-05-04 8 views
5

ich eine Sendung, indem Sie senden:BroadcastReceiver - OnReceive nicht aufgerufen wird

Intent intent = new Intent("com.usmaan.myApp.DATA_RECEIVED"); 
intent.putExtra("matchId", newRowId); 
LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent); 

Dies ist der Service ist, dass die AsyncTask hüllt die Broadcasts läuft die oben:

<service 
    android:name=".services.DataService" 
    android:exported="false" /> 

In meiner Tätigkeit habe ich Register, um eine Receiver in onResume:

IntentFilter intentFilter = new IntentFilter("com.usmaan.myApp.DATA_RECEIVED"); 
registerReceiver(mDataReceiver, intentFilter); 

Die `BroadRe EMPFÄNGERS sieht wie folgt aus:

private class DataReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     final long matchId = intent.getLongExtra("matchId", 0); 
     Toast.makeText(LaunchActivity.this, "" + matchId, Toast.LENGTH_LONG); 
    } 
} 

Die onReceive nie abgefeuert wird. Was mache ich falsch?

Antwort

6

verwenden entweder LocalBroadcastManager an beiden Orten (sendBroadcast() und registerReceiver()), oder sie LocalBroadcastManager nicht verwenden. Im Moment haben Sie ein nicht übereinstimmendes Paar.

+0

Die onReceive wird jetzt gefeuert, aber es zeigt nicht den Toast auf dem Bildschirm .... Wie kommt es? – Subby

+0

Um den Toast anzuzeigen, benutze den Kontext wie folgt: Toast.makeText (context, .... –

+0

Funktioniert immer noch nicht. Er trifft onReceive und führt den Toast-Code aus, aber ich sehe keinen Toast. – Subby