使用intent启动不同组件的方法

 

组件类型 启动方法
Activity startActivity(Intent intent)
startActivityForResult(Intent intent,int requestCode)
Service ComponentName startService(Intent service)
boolean bindService(Intent service,ServiceConnection conn,int flags)
BroadcastReceiver sendBroadcast(Intent intent)
sendBroadcasst(Intetn String receiverPermission)
sendOrderedBroadcast(Intent intent,String receiverPermission,BroadcastReceiver resultReceiver,Handler scheduler,int initialCode,String initialData,BundleinitialExtras)
sendOrderedBroadcast(Intent intent,String receiverPermission)
sendStickyBroadcast(Intent intent)
sendStickyOrderedBroadcast(Intent intent,BroadcastReceiver resultReceiver,Handler scheduler,,int initialCode,String initialData,BundleinitialExtras)

 

IntentFilter过滤信息

(1)IntentFilter中的过滤信息主要有action,category,data

(2)一个过滤列表中的action,category,data可以有多个,注意一个Intent对象最多只能包括一个Action属性,但是可以包含多个Category属性,可通过

   Intent.addCategory(String str)来添加Category属性

(3)一个Activity中可以有多个intent-filter,一个Intent只要能匹配任何一组intent-filter即可成功启动对应的Activity。

 

ation匹配规则

(1)action代表该Intent所要完成的一个抽象“动作”,注意Category则用于为Action添加额外的附加类别信息,两者属性都为字符串,通常结合一起使用。

(2)action区分大小写,大小写不同的字符串相同的action会匹配失败

(3)action的匹配要求Intent中的action存在并且必须和过滤规则中的其中一个action相同

 

 

category的匹配规则

(1)程序创建Intent时,默认启动Category属性值为Intent.CATEGORY_DEFAULT常量

(2)一个Intent对象最多只能包括一个Action属性,但是可以包含多个Category属性,Category的匹配过程与action不一样,intent中一旦有Category,那么不管有几个

       ,每个都要能够和过滤规则中的任何一个category相同

 

data的匹配规则

(1)data由两部分组成,mimeType和URI

(2)data属性通常用于向Action属性提供操作的数据,data属性接受一个Uri对象,URI的结构为<scheme>://<host>:<port>/[<path>|<pathPrefix>|<PathPattern>]

        例如:content://com.example.project:8080/folder/subfolder/etc;http:www.baidu.com:80/search/info

(3)mimeType属性用于指定该Data所指定Uri对应的MIME类型,这种MIME类型可以是任何自定义的MIME类型,只要符合abc/xyz格式的字符串即可

(4)如果要为Intent指定完整的data,必须通过调用setDataAndType方法,而不能通过调用setData方法再调用setType方法或者调用setType方法再调用setData方法