Activity隐式启动IntentFilter

时间:2016年3月4日09:54:02

IntentFilter过滤信息:action、category、data

action:
         1.Intent中的action必须能够和过滤条件中的action匹配,过滤条件中可以有多个action。
         2.Intent中如果设置多个action则过滤条件中必须至少有同样数量的action。
         3.如果Intent设置action但是并没有相应的过滤条件与之匹配则会报ActivityNotFoundException 异常。
         4.Action区分大小写。
         5.intent必须要书写设置action。(和category不同之处)。

category:
         1.intent中可以不书写category,因为在使用startActivity或者startActivityForResult时会默认给category添加“android.intent.category.DEFAULT”这个category。
         2.intent中如果出现了category,不管有几个对于没一个category来说过滤条件中都必须有已经定义的相同的category。


data:
         1.data有两部分组成,mimeType和URI。mimeType指媒体类型,比如image/jpeg,video/*等,URI结构如下:

                   <scheme>://<host>:<port>/[<path>]|[<pathPrefix>]|[<pathPattern>]

                   Scheme:URI的模式,比如http、file、content等,如果URI没有指定scheme,那么URI无效。
                   Host:URI的主机名,比如www.baidu.com,如果host未指定,那么URI无效。
                   Port:URI的端口号,比如80,仅当Scheme和Host指定时才有效。
                   Path:表示完整的路径信息。
                     PathPattern: 表示完整的路径信息,但是可以使用通配符。
                   PathPrefix:路径的前缀信息。
             
         2.如果仅指定了mimeType但是未指定URI,系统默认添加,默认值为content 或 file。
         3.如果要指定完整地data,即同时包含mimeType和URI,必须使用setDataAndType()方法,例如:                     intent.setDataAndType(Uri.parse("file://abc"),"image/*");
         4.如果先调用setData再调用setType这两个方法会清空彼此的相关值。


可以通过PackageManager的resolveActivity(Intent intent , Int flag)对是否有匹配的Activity进行判断,如果为null即无匹配。
也可以说使用PackageManager的queryIntentActivities(Intent intent, int flag)进行匹配,返回值为List<ResolveInfo>。
【int flag 需要使用PackageManager.MATCH_DEFAULT_ONLY】


         




转载于:https://www.cnblogs.com/yuzhongzheng/p/5241338.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值