下面给大家分享Android Activity intentflilter过滤机制(共含3篇),欢迎阅读!同时,但愿您也能像本文投稿人“ouou”一样,积极向本站投稿分享好文章。
一个Activity可以声明多个Action,在验证时只要通过一个即通过验证,如果Activity2声明如下3个Action:
其他的应用可以通过给Intent设置Action方法调用到Activity2(如果系统中其他应用也有相同的Action,会进行列表供用户选择),如:
Intent intent=new Intent;intent.setAction(“ACTION1”);startActivity(intent);
Activity2的
在其他应用中可以为Intent添加Category,当所添加的Category都在Activity2有声明是就会通过验证,如下Intent就能通过验证:
Intent intent=new Intent(); intent.setAction(“ACTION1”); intent.addCategory(“CATEGORY1”); intent.addCategory(“CATEGORY3”); startActivity(intent);
Data验证比较复杂点,可以验证Intent中设置的Mime Type和Uri。Mime Type可以指定处理的资源类型,如“audio/*”表示所有音频资源,设置MimeType:
调用的Intent 可以通过setType()或者setTypeAndNormalize()设置Mime Type,
Intent intent=new Intent(); intent.setAction(“ACTION1”); intent.setType(“audio/*”); // intent.setTypeAndNormalize(“audio/*”); startActivity(intent);
Uri比较Url范围广,格式为:scheme://host:port/path,其中scheme为协议标识如:http等,host为IP、域名等,port为端口号,path为路径,
在
相应的调用Intent可以如下:
Intent intent=new Intent(); intent.setAction(“ACTION1”); Uri uri=Uri.parse(“www.google.com:8080/abc.jsp”);//匹配path // Uri uri=Uri.parse(“www.google.com:8080/index.jsp”);//匹配pathPrefix // Uri uri=Uri.parse(“www.google.com:8080/idexn”);//匹配pathPattern intent.setData(uri); startActivity(intent);
但是,需要注意的是Intent的setData()方法和setType()会相互覆盖,也就是说,如果先使用setType()设置了Mime Type,之后在使用setData()设置了Uri,那么原先设置的MimeType就会被清空,反之也相同。以下为setData()方法源码,看了就很容易理解了:
public Intent setData(Uri data) { mData = data; mType = null; return this;}
如果一个Activity的
总结下,如果一个Activity在
★ 《过滤和结晶》
★ 机制求职信
★ 机制专业自荐信
★ 制度机制风险
★ 三项机制发言稿
★ 岗位机制范文
★ 货币发行机制
★ 工作机制怎么写