我想观看特定的短信,并在收件人到达时处理它。然后我想“吃掉它”,这样它就不会向上冒泡并显示给用户(它应该“静默地”处理)。这可能吗?如果是这样,怎么样?
答案 0 :(得分:4)
这可能吗?如果是这样,怎么样?
由于SMS广播恰好是有序广播,因此BroadcastReceiver
可以呼叫abortBroadcast()
以阻止它被较低优先级的接收者处理。
Here is a blog post暂时讨论有序广播。 Here is a sample project基于该博文。有条件执行abortBroadcast()
的{{3}}。
答案 1 :(得分:1)
I then want to "eat it" so that it doesn't bubble upwards and display to the user (it should be handled "silently")
咦?您注册接收的意图以静默方式处理,除非您选择“大声”处理它。
修改强>
此外,无法阻止其他应用响应SMS消息。考虑允许一个应用程序控制其他应用程序是否可以侦听系统事件的安全隐患......
答案 2 :(得分:1)
您正在寻找Android中的服务构造。它被设计为运行某些东西,而不需要UI(如活动)。
BroadcastReceiver是您应该研究捕获SMS事件的附加功能。
答案 3 :(得分:1)
是的,它可以通过abortBroadcast()方法中止,如果你将IntentFilter的优先级设置为1000(最高优先级),那么这个接收器将在系统之前接收广播。