私が実装MyBroadcastReceiverクラスを持っている、と私は、ランタイム内の1つの放送受信機を登録してみました:登録放送局の何が問題なのですか?
String MY_ACTION = "DUMMY";
MyBroadcastReceiver receiver = new MyBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter(MY_ACTION);
Log.i(TAG, "intentFilter: " + intentFilter.getAction(0));
Intent intent = context.registerReceiver(receiver, intentFilter);
Log.i(TAG, "intent returned after registering:" + intent);
Intent queryIntent = new Intent(MY_ACTION);
PackageManager pm = context.getPackageManager();
List<ResolveInfo> resolveInfos = pm.queryBroadcastReceivers(queryIntent, 0);
Log.i(TAG, "list of receivers:" + resolveInfos.toString());
私はadbのシェルから放送を走った:
am broadcast \
-n com.foo.foo.foo/.MyBroadcastReceiver \
-a DUMMY
私はまた、いくつかのログを持っています。私のonReceive()(MyBroadcastレシーバーの内部で実装されています)。
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "in Broadcasting Receiver anyway");
if (intent != null) {
...
}
}
}
結果は:
- intentFilter.getActionのログ登録私は
- ヌルを与えた後(0)右作用
- を意図のログを与えますログから空の受信者リストを取得しました。 そしてonReceiveが入力されていない(ログから私は を見ることができる)私は私のレジスタ部との多少の誤差があると思います
? ヒント/アドバイスは高く評価されます!
ありがとうございました。 MyBroadcastReceiverのコードで質問を更新しました。 –
私の答えの最後に別のアイデアを追加しました。また、あなたのコード 'context.registerReceiver()'に 'context'とは何ですか?あなたはこれを 'アクティビティ'や 'サービス'から呼び出すのですか? –
コンテキストは、context.getApplicationContext()を使用して取得し、ループします。 –