10

メソッドでIntentFilterを使用してBroadcastReceiverを作成するアクティビティが 1 つあります。 onCreate(...)

IntentFilter iFilter = new IntentFilter("action");

receiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

    }
};

registerReceiver(receiver, iFilter);

反対側にはIntentServiceがあり、いくつかのデータを送信します。

Intent intent = new Intent(getApplicationContext(), receiver.class);
intent.setAction("action");

[...]

sendBroadcast(intent);

しかし、うまくいかないようです。ブロードキャストは受信されません。
私のサービス クラスは Android ライブラリにあります。おそらくこれが問題になります。

アドバイスをありがとう。

4

2 に答える 2

10

アクションでインテントを作成するだけです。

Intent intent = new Intent("action");
[...]
sendBroadcast(intent);

また、「アクション」の名前を「com.my.package.actions.SOME_ACTION」など、より意味のあるものに変更することを検討してください。

アプリケーション コンポーネントがブロードキャストを受信することだけが必要な場合は、次を使用します。

  1. 保護レベルを使用してマニフェストにアクセス許可を登録しますsignature(そして、そのアクセス許可の使用許可を定義します)。詳細はこちら
  2. を使用sendBroadcast(intent, permission)し、1 でパーミッションを指定します。
于 2011-07-14T18:23:56.143 に答える
6

インテントがアプリ内のみにある場合は、LocalBroadcastManagerの使用を検討してください

于 2014-01-27T00:14:06.443 に答える