使用Intent和IntentFilter进行通信

         Intent提供了一种一致的编程模型,Intent还是应用程序组件之间通信的重要媒介,两个Activity可以把需要交换的数据封装成Bundle对象,然后用Intent来携带Bundle对象,这样就实现了两个Activity之间的数据交换。

       Android的应用程序包含三种重要组件:ActivityServiceBroadcastReceiver,应用程序都是采用Intent来启动他们的。

Intent的属性及intent-filter配置:

1Component属性

     IntentComponent属性需要接受一个ComponentName对象,包含如下几个构造器,通过显示Intent启动一个Activity

 



当程序通过IntentComponent属性启动特定组件时,被启动组件几乎不需要用<intent-filter....>元素进行配置

2ActionCategory属性与intent-filter配置

   ActionCategory属性都是一个普通的字符串,其中Action表示Intent所要完成的一个抽象”动作“,而Category则用于为Action添加额外的附加类别信息。通常Action和Category结合使用。

    Action完成的只是一个抽象”动作“,这个动作具体由哪个组件来完成,Action这个字符串本身并不管。这取决于Activity的配置,只要有某个Activity配置文件符合,该Activity就可能被启动。如果有多个Activity都符合,则会弹出对话框供用户选择。

   Action和Category在Intent中的配置:


    注意:一个Intent对象只能有一个Action属性,但一个Intent可以有多个Category属性。且Cateory的默认值为intent.category.DEFAULT常量。Cateory的值可以不指定,就为默认值。

   在Activity的Manifest.xml文件中的配置:


3、Data、Type属性intent-filter配置

   Data属性通常用于向Action属性提供操作的数据。Data接受一个Uri对象,Uri对象的格式如下:

   

   Type属性用于指定该Data所指定Uri对应的MIME类型,这种MIME类型只要满足abd/xyz格式的字符串即可。

   Data与Type的关系:

1)、如果Intent先设定Data的值,后设置Type的值,那么Type就会覆盖Data属性。

2)、如果Intent先设定Type的值,后设置Data的值,那么Data就会覆盖Type属性。

  如果希望同时设定Data和Type的值,就应该调用Intent的setDataAndType()方法。

  在Intent中设置Data和Type属性:


在配置文件中设置(都通过<data .../>设置):


4、 Extra属性

       Extra属性通常用于在多个Action之间进行数据交换,Intent的Extra属性值应该是一个Bundle对象,它可以存入多个键值对,这样就可以在多个Activity之间进行数据交换了。

5、Flag属性

      Intent的Flag属性用于为该Intent添加一些额外的控制旗标,可调用addFlags()方法来为Intent添加控件旗标。


 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值