什么是Intent过滤器?

Min*_*amy 19 android intentfilter

我已经阅读了很多关于意图过滤器的文章,我真的无法理解他们究竟做了什么?

所以如果有人能用一个明确的例子向我解释一下,意图过滤器的作用究竟是什么?

谢谢

Ale*_*lli 19

我认为这里有很好的记录.总结一下,当您(例如)将一个意图传递给Context.startActivity或Context.startService,或者用Context.sendBroadcast等广播它时,传递给它的意图是什么活动或服务(或什么样的广播接收器)?

答案:如果意图是"显式的",即它设置了组件名称字段,那么它将被传递给它指定的目标组件 - 这通常发生在应用程序内的通信中.

否则("隐式"意图,这是应用程序之间通信的典型意图),Android必须自己确定最佳活动或服务(或接收器集).Android是如何做到的?这就是过滤器的用武之地,我引述:

它通过将Intent对象的内容与意图过滤器,与可能接收意图的组件相关联的结构进行比较来实现.过滤器通告组件的功能并分隔它可以处理的意图.他们打开组件以接收广告类型的隐式意图.如果组件没有任何意图过滤器,则它只能接收显式意图.具有过滤器的组件可以接收显式和隐式意图.

有问题的网页继续提供许多细节,最后是一个完整而简单的例子,我认为将它们复制并粘贴在这里是多余的.


Ben*_*Ben 5

简而言之,意图过滤器是一种告诉操作系统如何与应用程序中的不同活动/服务/广播接收器启动/通信的方法。因此,例如,如果您希望以http://www.mycompany.com开头的链接引导人们进入您的应用程序,则可以使用意图过滤器来实现此目的。设置完成后,只要有人单击以该链接开头的链接(在任何应用程序中),就会向用户显示使用您的应用程序查看该页面的选项。您可能已经在YouTube网址上看到了这一点。同样,如果您希望在许多应用程序中常见的“共享”链接列出您的应用程序,则可以使用意图过滤器来实现。

希望这可以帮助...