Android 中的 intent 和 intent-filter(一)

在Android 中四大组件之间都可以进行相互的调用,但是一般在App中只是对于Activity ,Service,BroadcastReceiver他们之间的相互调用,但是他们之间是如何通讯的呢,这就为大家引出了我们的主角

 intent 与 intent-filter

        intent 翻译过来的意思是意图,而他的作用就是作为一个消息传递对象,将消息传递下去

        intent-filter 就是一个和intent 进行搭配工作的组件, 它是是应用清单文件(AndroidManifest.xml)中的一个表达式,它指定该组件要接收的 Intent 类型。 例如,通过为 Activity 声明  intent-filte,您可以使其他应用能够直接使用某一特定类型的 Intent 启动 Activity。同样,如果您没有为 Activity 声明任何 intent-filte,则 Activity 只能通过显式 Intent 启动。

        比如在Activity 中,如果要打开一个相机,那么就需要通过intent 的setAction传递一个动作,那么在系统自定义的Activity 中就会和传过来的action 进行匹配,如果两个相符,那么才可以打开照相机,否则就相应的操作反馈

 intent 的作用

    作用1: 启动一个Activity

    作用2 : 启动一个服务

    作用3 : 传递一个广播

 intent 的类型

    显示意图 : 按照名称打开一个指定的组件,如

      Intent intents = new Intent(this,BasicActivity.class);

            startActivity( intents );

            其中 this 指的是一个context 的对象  BasicActivity.class 的类型是 Class<?>  ,指的是一个Activity 的子类的.clss,一般会在开发者自己定义的Activity 进行调用

    隐式意图 : 不会指定特定的组件,而是声明要执行的常规操作,从而允许其他应用中的组件来处理它.一般会在不知道要打开Activity 的时候进行调用,如打开相机,一般是开发者打开自己书写的Activity 的时候进行调用,如

      Intent intents = new Intent();

        intents.setAction( Intent.ACTION_MAIN );

        intents.addCategory( Intent.CATEGORY_LAUNCHER );

        startActivity( intents );

        在开发者文档中对于现实意图和隐式意图有这样一段介绍

        创建显式 Intent 启动 Activity 或服务时,系统将立即启动 Intent 对象中指定的应用组件。


        创建显式 Intent 启动 Activity 或服务时,系统将立即启动 Intent 对象中指定的应用组件。

        创建隐式 Intent 时,Android 系统通过将 Intent 的内容与在设备上其他应用的清单文件中声明的 Intent 过滤器进行比较,从而找到要启动的相应组件。 如果 Intent 与 Intent 过滤器匹配,则系统将启动该组件,并向其传递 Intent 对象。 如果多个 Intent 过滤器兼容,则系统会显示一个对话框,支持用户选取要使用的应用。

 intent - filter 的内容

        在intetnt-filter 中一般可以定义下面几种类型

            组件名称: 这个组件在现实意图是一个必选项,但是在隐式意图确是一个可选项,因为这个组件名称也就是ComponentName 这个对象,(在清单文件中没有申明)

                            显示意图中他就是    startActivity( new Intent(this,BasicActivity.class) ); 中要调用的 Activity的class 对象

                            隐式意图中如果想要进行使用,那么可以通过 setComponent ,setClass  ,setClassName 进行调用

            操作: 指定要执行的通用操作(例如,“查看”或“选取”)的字符串,在清单文件中对应action的字段

            数据 : 引用待操作数据和/或该数据 MIME 类型的 URI(Uri 对象)。提供的数据类型通常由 Intent 的操作决定,在清单文件中对应data的字段

            类别 : 一个包含应处理 Intent 组件类型的附加信息的字符串,在清单文件中对应type 的字段

            Extra : 携带完成请求操作所需的附加信息的键值对,在清单文件中没有对应

  各个类型在清单文件中的定义数量

        action, data, category,都可以定义多个

 强制使用应用选择器

        如果有多个选项满足,那么就会弹出一个选择框,让用户进行选择如

            有一个 url 想要访问,但是在手机中有多个浏览器,那么就需要选择以哪种方式进行访问

            如果要显示选择器,请使用 createChooser() 创建 Intent

 Intent 匹配

        使用 Intent 匹配。PackageManager 提供了一整套 query...() 方法来返回所有能够接受特定 Intent 的组件。此外,它还提供了一系列类似的 resolve...() 方法来确定响应 Intent 的最佳组件。 例如,queryIntentActivities() 将返回能够执行那些作为参数传递的 Intent 的所有 Activity 列表,而 queryIntentServices() 则可返回类似的服务列表。这两种方法均不会激活组件,而只是列出能够响应的组件。 对于广播接收器,有一种类似的方法: queryBroadcastReceivers()。

 限制对组件的应用

        如果想要外部的组件不可以访问自己的组件,那么可以在清单文件中进行配置

            将 exported 属性设置为 "false"

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,639评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,277评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,221评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,474评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,570评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,816评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,957评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,718评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,176评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,511评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,646评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,322评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,934评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,755评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,987评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,358评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,514评论 2 348