2013-10-10 21 views
6

自分のアプリケーションから別のアプリケーションにブロードキャストを送信する必要があります。 私のアプリケーションパッケージは、1)com.demo.database及び2)com.demo.listブロードキャストを1つのapk /パッケージから別のapk /パッケージに送信する

Intent themesIntent = new Intent(ThemesManager.THEMES_UPDATED); 
themesIntent.putExtra("package", packageName); 
ctx.sendBroadcast(themesIntent); 

が機能していない..です

編集:

<receiver android:name="com.sample.ThemesUpdatedReceiver"> 
     <intent-filter> 
      <action android:name="com.sample.THEMES_UPDATED"/> 
     </intent-filter> 
    </receiver> 
+0

'AndroidManifest.xml'ファイルの' com.demo.list'に 'BroadcastReceiver'を宣言しましたか?なぜなら、AndroidManifest.xmlはアプリケーション間で動作するためであるからです。 – bclymer

+0

ええ、それはインテントフィルターと一緒にあります。 – AJit

+0

重要なことは、com.demo.listにはLAUNCHERアクティビティがありません。違いがあるかどうかわかりません。 – AJit

答えて

2

あなたはするつもりならそれは一般的に送信者と受信者がいます。あなたは(あなたから送っている今まで)

送信者...送信者どのように見えるかを掲載しました:(例えばonResume()中)

Intent toret = new Intent(); 
toret.setAction("com.myapp.foo"); 
toret.putExtra("bar", "fizzbuzz"); 
sendBroadcast(toret); 

受信機

IntentFilter intentFilter = new IntentFilter("com.myapp.foo"); 
    BroadcastReceiver receiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      // ... do something with the intent 
     } 
    // register the receiver 
    this.registerReceiver(receiver , intentFilter); 

送信者は、常に送信し、レシーバーは意図を聞くために登録する必要があります。

+0

yup、AndroidManifest.xmlに登録 – AJit

+0

XMLには何がありますか? (THEMES_UPDATED定数は何ですか?) –

+0

は編集を追加しました。はいTHEMES_UPDATEDは定数値 – AJit

2

特定のパッケージブロードキャストの送信インテントにsetPackageを設定した場合を除いて、送信されるすべてのブロードキャストがすべてのアプリケーションによって受信されると考えました。

他のアプリが起動していない(起動していない)ため、ブロードキャストを受信できません。

5

@Ajit:こんにちは、Android API 3.0 [APIレベル11]以降、一度でもアプリケーションが起動していない場合、BroadcastReceiverはイベントを受信できません。あなたのアプリにはランチャーアクティビティがありませんイベントの拒否を引き起こす場合もあります。

それに加えて、以下の方法を試してみてください: インテントオブジェクトの作成中にその定数値を渡しました。代わりに、メソッドintent.setAction()に渡します。

これが役に立ちます。

+0

です。ans @anishのおかげで、設定とアクションは解決策を提供していません... – AJit

+0

非常に有用なans –

関連する問題