を受信していない1つのアプリで私の送り主である: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