2012-08-10 76 views
5

我在少数android广告网络sdks中看到他们宣称BroadcastReceiver没有意图过滤器。这样的事情:没有意图过滤器的Android BroadcastReceiver

<receiver android:name="com.example.SampleReceiver" /> 

我的猜测是,这样的接收器将捕获所有可能的事件。于是,我试着做我自己,创造了SampleReceiver

public class SampleReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     System.out.println("Event captured: " + intent.getAction()); 
    } 
} 

我已经推出了应用程序,试图通过我的手机上做各种动作射击的一些事件,并注意到onReceive()没有叫甚至一度。

所以问题是 - 这样的BroadcastReceiver没有意图过滤器如何工作?也许它需要通过代码创建意图过滤器?如果是这样,怎么样?如果不是,那为什么它没有收到任何事件?这里发生了什么?

+0

你有很大的评级写现在:) – Jin35 2012-08-10 12:20:52

回答

0

我认为以下问题/答案应该给你一些线索:

Create an IntentFilter in android that matches ALL intents

+0

这表明,这种广播接收器不接收所有事件。但问题依然存在:那么接收机在做什么呢?不管怎么说,还是要谢谢你。 – 2012-08-10 12:26:21

+0

我怀疑他们设置了一个你无法看到的代码的意图过滤器。 – wojciii 2012-08-10 12:27:44

+0

但它仍然没有回答他们如何做:) – 2012-08-10 12:28:56

5

如果没有一些意图过滤器,接收的时候,唯一的办法是显式调用接收器。 这应该是这样的:

context.sendBroadcast(new Intent(context, MyBroadcastReceiverClass.class)); 

另一个人已经回答了下面的帖子这个问题: https://stackoverflow.com/questions/10051256/broadcast-receiver-not-receiving

+0

如果你想通过命令行来测试它,你可以运行'adb shell am -n com.example/.SampleReceiver' – Jamby 2016-03-30 09:32:14