博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Intent(意图)
阅读量:6672 次
发布时间:2019-06-25

本文共 1625 字,大约阅读时间需要 5 分钟。

hot3.png

Intent的作用主要是激活系统组件,以及在系统组件之间传递数据。

Intent的核心属性:

1) ComponentName:组件名称

  ComponentName用于激活系统组件时,指定被激活的组件名称

2) Extra:附加数据

  Extra用于向Intent对象内部封装数据,当该Intent被用于激活组件时,被激活的组件就可以拿到该Intent,从而获取之前封装的数据。

  可以在Intent中直接封装的数据类型相对比较有限,大致包括:基本数据类型,基本数据类型的数组,基本数据类型的包装类的ArrayList,CharSequence,CharSequence的数组,ArrayList<String>,Parcelable接口的实现类,Parcelable接口的实现类的数组

3) Action:动作

  用于激活类名未知的系统组件(例如Activity、Service等)

  Action的值是String类型的数据,应该由被激活的组件的设计者提供

4) Data:数据

  该属性通常与Action同时使用,该属性的类型是Uri类型,Uri类型的数据可以通过Uri.parse(String)得到,并且,Uri类型的数据的字符串形态相对是固定的格式,例如"tel:10086"

5) Category:分类

  通常用于Intent与IntentFilter之间验证过滤,同一个Intent对象可以有多个Category属性值,每一个Intent对象将默认添加android.intent.category.DEFAULT这个Category属性

PS:Intent的属性还包括Type、Flag等。

显式意图与隐式意图

-------------------------------

显式意图,显式的指定了Intent的ComponentName属性,例如:new Intent(this, SecondActivity.class);

隐式意图,显式的指定了Intent的Action属性,例如:intent.setAction("android.intent.call");

以上2种意图是冲突的,当使用显式意图时,隐藏意图的相关配置是无效的

PS:隐式意图可以实现跨进程激活组件,而显式意图只能激活自身应用程序的组件

IntentFilter(意图过滤器)

-------------------------------

IntentFilter是对Intent进行过滤的工具,只有匹配的Intent才认为是许可的,则许可的Intent可以激活配置了该IntentFilter的组件。

如果某个Activity需要设置为可以被隐式意图激活,则需要在AndroidManifest.xml的对应的Activity节点下配置<intent-filter>节点,并在<intent-filter>节点下至少添加1个<action>节点和1个<category>节点,其中,<action>节点中的name属性值可以自由定义,将表现为激活当前Activity时需要指定的Intent的Action属性值,<category>节点的name属性值必须是"android.intent.category.DEFAULT"。

IntentFilter的过滤规则:IntentFilter中配置的Action和Category属性,比需要进行匹配验证的Intent中的同样的属性,只能多,不能少。

例子:

打电话:

Intent it = new Intent();			it.setAction(Intent.ACTION_DIAL);			it.setData(Uri.parse("tel:10086"));			startActivity(it);

转载于:https://my.oschina.net/dreamerspace/blog/626496

你可能感兴趣的文章
NOIP2014 提高组 Day2——寻找道路
查看>>
设置Sysctl.conf用以提高Linux的性能(最完整的sysctl.conf优化方案)
查看>>
tp路由+伪静态+去掉index.php
查看>>
R.I.P. PK
查看>>
【转载】使用铁哥SmartFlash快速开发方案:66行代码搞定抽奖程序!
查看>>
Map<key,value>泛型get(key)值为null问题解决
查看>>
ZendFramework学习第一章
查看>>
40种网页小技巧
查看>>
PHP 乱码解决方面
查看>>
在Linux中一个网卡绑定多个IP设定
查看>>
Ural 1519 Formula 1 (插头DP)
查看>>
c++动态链接库函数转换为C#函数
查看>>
编写用逻辑扇区号读写软盘的中断例程
查看>>
Pentaho Big Data Community Home - Pentaho Big Data - Pentaho Wiki
查看>>
HTML基础(二)
查看>>
使用Notepad++实现批量将ANSI转成为UTF-8编码
查看>>
Codeforces Round #280 (Div. 2) E. Vanya and Field 思维题
查看>>
Jquery获取select选中的option的文本信息
查看>>
Android-支付宝快捷支付
查看>>
您需要来自administrators的权限才能对此文件进行更改
查看>>