2016-11-14 21 views
1

を受信して​​いない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()にログインすることはありません。

+1

受取人はどこに登録していますか?それがアクティビティの中にある場合は、インテントを受け取るためにアクティブでなければなりません。そうでない場合は、受信者を 'Manifest'の中に登録する必要があります。あなたが達成したいことを記述してください。 –

+0

すべてが問題ない場合は、電話を再起動してもう一度やり直す必要があります。 – javadaskari

答えて

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

getIntentは、 "名前" キー と....取るために意図getExtraまたはGetStringExtraを受け取るために、あなたはあなたがこれまでnew MyBroadcastReceiver()mReceiverを初期化してください

startActivity(intent) 
+0

それは助けますか? –

0

する必要がありますか?

関連する問題