1
我有一个MyBroadcastReceiver类实现,我试图在运行时注册一个广播接收器:我的注册广播接收机有什么问题?
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());
我跑了广播从亚行外壳:
am broadcast \
-n com.foo.foo.foo/.MyBroadcastReceiver \
-a DUMMY
我也有一些日志。我在我的onReceive()(在MyBroadcast Receiver里面实现)。
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()获取上下文并遍历它。 –