我是靠谱客的博主 暴躁皮卡丘,最近开发中收集的这篇文章主要介绍IntentFilter匹配规则,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

   启动activity分为隐式启动和显式启动,其中隐式启动不指定具体的activity,而是通过一些条件来匹配,分别是category ,action,data。一个intent必须同时匹配这三个条件才能启动相应的activity。一个activity可以有多个action,category和data。


action的匹配规则


   action是一个字符串。系统预定义了一些action,也可以在应用中自定义action。如果activity指定了action,那么intent中也必须指定完全相同的action。否则匹配失败。若activity中一个intent-filter指定了多个action,则intent中只要有一个能和这些action匹配就算成功。


category的匹配规则


   category是一个字符串。系统定义了一些category,同时也可以自己在应用中定义category。如果intent中指定了category,那么intent中所有的category都必须能够与intent-filter中的其中一个category匹配。 intent也可以不指定category,同样可以匹配成功。因为系统在startActivity或者startActivityForResult时会自动给intent
加上android.intent.category.DEFAULT这个category。因此我们在写activity时为了activity能接收隐式调用,要给activity加上
这个category。


data的匹配规则


   data的匹配规则和action类似。如果过滤规则中定义了data,那么intent中必须有对应的data。
<intent-filter>
        <data android:mimeType="image/*"/>
        .....
 </intent-filter>


  比如上面这种这种过滤规则,intent中的mimeType属性必须为"image/*"才能匹配。data同时还要指定一个URI。
在过滤规则中虽然没有uri属性,但是却有默认值,当过滤规则中不指定URI时,intent中的uri部分的schema必须是content
或者file才能匹配。
   上面例子中可以这么来匹配
intent.setDataAndType(Uri.parse("file://abc"),"image/png");


 

最后

以上就是暴躁皮卡丘为你收集整理的IntentFilter匹配规则的全部内容,希望文章能够帮你解决IntentFilter匹配规则所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部