2016-11-14 4 views
1

Hier ist mein Absender in einer App:Android BroadcastReceiver erhält keine Absicht

intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
intent.setAction("my.pack.SET_DONE"); 
intent.putExtra("name", "PWM"); 
intent.addCategory(Intent.CATEGORY_DEFAULT); 
mContext.sendBroadcast(intent); 

Und hier ist mein Empfänger in der anderen App:

private Object mySyncObj = new Object(); 
private AtomicBoolean mySetDone = new AtomicBoolean(false); 
static private MyBroadcastReceiver mReceiver; 

    public class MyBroadcastReceiver extends BroadcastReceiver{ 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 
      Log.d(LOG_TAG, "action = " + action); 

      if (action.equalsIgnoreCase("my.pack.SET_DONE")){ 
       synchronized (mySyncObj) { 
        mySetDone.set(true); 
        mySyncObj.notify(); 
       } 
      } 

     } 
    } 

Der Empfänger registriert wird dynamisch

mIntentFilter = new IntentFilter("my.pack.SET_DONE"); 
mIntentFilter.addCategory(Intent.CATEGORY_DEFAULT); 
ctx.registerReceiver(mReceiver, mIntentFilter); 
mySetDone.set(false); 
// do something and then wait for the broadcast 
synchronized (mySyncObj) { 
     try { 
      while(!mySetDone.get()) { 
       mySyncObj.wait(); 
      } 
     } catch (InterruptedException ie) {} 
    } 

Von Logcat kann ich sehen, dass die Übertragung der Absicht in Ordnung ist, aber ich sehe nie das Anmelden onReceive().

+1

Wo registrieren Sie Ihren Empfänger? Wenn es in einer Aktivität ist, muss es aktiv sein, damit es die Absicht erhält. Wenn nicht, müssen Sie Ihren Empfänger im 'Manifest' registrieren. Beschreibe, was du erreichen willst. –

+0

Wenn alles in Ordnung ist, sollten Sie Ihr Telefon neu starten und es erneut versuchen! – javadaskari

Antwort

0
Intent intent = getIntent(); 
String name = intent.getStringExtra("name"); 

getIntent die Absicht getExtra oder GetStringExtra erhalten die nehmen .... mit "name" Schlüssel dann müssen Sie

startActivity(intent) 
+0

hilft es ...? –

0

Sie initialisieren Sie jemals mReceiver mit new MyBroadcastReceiver()?

Verwandte Themen