Вот мой отправитель в одном приложении:Android BroadcastReceiver не получают намерения
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);
И вот мой приемник в другом приложении:
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();
}
}
}
}
Приемник зарегистрирован динамически
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) {}
}
Из logcat, я вижу, что трансляция намерения в порядке, но я никогда не вижу вход в onReceive().
Где вы можете зарегистрироваться? Если он находится внутри деятельности, он должен быть активным, чтобы получить намерение. Если нет, вам необходимо зарегистрировать приемник внутри «Manifest». Опишите, чего вы хотите достичь. –
если все в порядке, перезагрузите телефон и повторите попытку! – javadaskari