6

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

 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>
4

3 に答える 3

5

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

それに伴い、以下のアプローチを使用してみてください: Intent オブジェクトの作成中にその定数値を渡しました。代わりに、intent.setAction(); メソッドに渡します。

お役に立てれば。

于 2014-12-13T15:16:54.680 に答える
3

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

別のアプリが起動されていない (ランチャー アクティビティがない) ため、ブロードキャストを受信して​​いません。

于 2013-10-11T10:41:12.583 に答える
2

ブロードキャストする場合は、通常、送信者と受信者が必要です。あなたは送信者のように見えるものを投稿しました..

送信者 (送信元):

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

レシーバー (例: onResume())

    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);

送信者は常に送信し、受信者はインテントをリッスンするために登録する必要があります。

于 2013-10-10T19:33:30.583 に答える