疯狂android讲义(第三版)——第五章:使用Intent和IntentFilter进行通信

使用Intent和IntentFilter进行通信

 

使用 Intent 和 IntentFilter 进行通信---Intent封装Android应用程序需要启动某个组件的“意图”。Intent还是应用程序组件之间的通信的重要媒介(携带bundle对象)。

Intent对象
    Intent封装了程序想要启动程序的意图,还可用于与被启动组件交换信息。


    大致包含Component、Action、Category、Data、Type、Extra和Flag这7种属性
        其中Component用于明确指定需要启动的目标组件,
        而Extra则用于"携带"需要交换的数据。


Intent 的属性 及 intent-filter 配置
    Component 属性---显示Intent
        接受一个ComponentName对象,包含如下构造器:
            ComponentName(String pkg,String cls)
            ComponentName(Context pkg,String cls)
            ComponentName(Context pkg,Class<?> cls)


        Intent还包含如下三个方法
            setClass(Context packageContext,Class<?> cls)
            setClassName(Context packsgeContext,String className)
            setClassName(String packsgeName,String className)


        context---代表访问该应用环境信息的接口,android应用的包名则作为应用的唯一标识,因此context对象与该应用的包名有一一对应的关系


        Intent提供了简化的构造器


    Action、Category 属性与 intent-filter 配置---隐示Intent


        Action---代表该Intent所要完成的一个抽象“动作”,一个Intent最多只能包含一个Action属性
            intent.setAction(Strong str)


        Category---则用于为Action增加额外的附加类别信息,可以包含多个Category属性
            intent.addCategory()


        具体启动哪个Activity取决于Activity配置中<intent-filter .../>
        <intent-filter.../>---AndroidManifest.xml文件中<activity.../>元素的子元素
            用于配置该Activtity所能“响应”的Intent
            包含如下元素
                0~N个<action.../>子元素---android:name
                0~N个<category.../>子元素---android:name
                0~1个<data.../>子元素
            只要某个组件能满足的要求大于、等于Intent所指定的要求,那么该Intent就能启动该组件。


    指定Action、Category条用系统Activity---Intent可以启动Android系统的其他应用的程序组件,包括系统自带的程序组件
        Android内提供了大量标准的Action、Category常量
            ACTION_GET_CONTENT---让用户选择数据,并返回所选数据
            CATEGORY_HOME---随系统启动而运行


    Data、Type 属性 与 intent-filter 配置
        Data:通常用于向Action属相提供操作的数据。接受一个Uri对象
        Type:用于指定该Data属性所指定的Uri对应的MIME类型


        Data和Type两个属性会相互覆盖,如果需要同时两个属性,则应该调用Intent的setDataAndType()方法


        AndroidManifest.xml文件中为组件声明Data、Type属性都通过<data.../>元素
            android:
                mimeType
                scheme
                host
                port
                path
                pathPrefix---path前缀
                pathPattern---path字符串模板


            Intent的Type属性用于指定该Intent的要求,对应组件中<intent-filter.../>元素的<data.../>子元素的mimeType属性必须于此相同,才能启动该组件。


    使用Action、Data属性启动系统Activity
        String data=“...”
        Uri uri=Uri.parse(data)
        intent.setData(uri)
        intent.setAction(Intent.ACTION_VIEW)


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


    Flag 属性---用于为该Intent添加一些额外的控制旗标,Intent可调用addFlags()方法来添加控制旗标。
        FLAG_ACTIVITY_BROUGHT_TO_FRONT
        FLAG_ACTIVITY_CLEAR_TOP
        FLAG_ACTIVITY_NEW_TASK
        FLAG_ACTIVITY_NO_ANIMATION
        FLAG_ACTIVITY_NO_HISTORY
        FLAG_ACTIVITY_REORDER_TO_FRONT
        FLAG_ACTIVITY_SINGLE_TOP


Intent 创建 Tab页
    TabActivity来创建Activity布局,添加Tab页使用TabHost.TabSpec
        setContent(int viewId)
        setContent(Intent intent)

 

小结:

本章内容主要介绍了Intent的功能和用法——启动某个组件的“意图”,掌握常用属性以及在AndroidManifest中配置<intent-filter.../>.

 

今日分享:

为了快速愈合,我们从自己身上剥夺了太多东西。以致在三十岁时,自己的感情就已破产。每开始一段新的感情,我们能给予的便越少,但是为了让自己不要有感觉而不去感觉,多么浪费。

                                                                                                             ——安德烈·艾席蒙 《请以你的名字呼唤我

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值