Android中与Intent相关的还有,027android初级篇之Intent相关介绍

Intent概念

在Android中提供了Intent机制来协助Android应用间,组件间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。

Intent可以用来启动Activity,Service,Broadcasts。

Intent的属性

Intent有以下几个属性:动作(Action),数据(Data),分类(Category),类型(Type),组件(Compent)以及扩展信(Extra)。

Intent类型分为显式Intent(直接类型)、隐式Intent(间接类型)。官方建议使用隐式Intent。上述属性中,component属性为直接类型,其他均为间接类型。

相比与显式Intent,隐式Intnet则含蓄了许多,它并不明确指出我们想要启动哪一个活动,而是指定一系列更为抽象的action和category等信息,然后交由系统去分析这个Intent,并帮我们找出合适的活动去启动。

1. Action属性

Action要表达的是Intent要完成的动作,是字符串常量。

SDK中定义了一些标准的Action常量。使用它们可以用来启动android系统的一些内置程序如相机,相片库,打电话,等等。(具体可参考文章009android初级篇之APP中使用系统相机相册等集成应用).

2. Data属性和extras属性

即执行动作要操作的数据和传递到目标的附加信息

/**

* 打开指定网页

* @param view

*/

public void invokeWebBrowser(View view) {

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setData(Uri.parse("http://www.google.com.hk"));

startActivity(intent);

}

/**

* 进行关键字搜索

* @param view

*/

public void invokeWebSearch(View view) {

Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);

intent.putExtra(SearchManager.QUERY, "android"); //关键字

startActivity(intent);

}

3. Category属性

Category属性是一个执行动作Action的附加信息。比如:CATEGORY_HOME则表示放回到Home界面,ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个。下表是SDK文档中关于Category的信息

几个常见的category如下:

Category 常量对应字符串 简单说明

CATEGORY_DEFAULT android.intent.category.DEFAULT 默认的Category

CATEGORY_BROWSABLE android.intent.category.BROWSABLE 指定该Activity能被浏览器安全调用

CATEGORY_TAB android.intent.category.TAB 指定Activity作为TabActivity的Tab页

CATEGORY_LAUNCHER android.intent.category.LAUNCHER Activity显示顶级程序列表中

CATEGORY_INFO android.intent.category.INFO 用于提供包信息

CATEGORY_HOME android.intent.category.HOME 设置该Activity随系统启动而运行

CATEGORY_PREFERENCE android.intent.category.PREFERENCE 该Activity是参数面板

CATEGORY_TEST android.intent.category.TEST 该Activity是一个测试

CATEGORY_CAR_DOCK android.intent.category.CAR_DOCK 指定手机被插入汽车底座(硬件)时运行该Activity

CATEGORY_DESK_DOCK android.intent.category.DESK_DOCK 指定手机被插入桌面底座(硬件)时运

4.type属性

Intent的Type属性显式指定Intent的数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显式指定的类型而不再进行推导。

例如:一个可以处理图片的目标Activity在其声明中包含这样的mimeType:

在使用Intent进行匹配时,我们可以使用setType(String type)或者setDataAndType(Uri data, String type)来设置mimeType。

5.component属性

目标组件的包或类名称

在使用component进行匹配时,一般采用以下几种形式:

intent.setComponent(new ComponentName(getApplicationContext(), TargetActivity.class));

intent.setComponent(new ComponentName(getApplicationContext(), "com.scott.intent.TargetActivity"));

intent.setComponent(new ComponentName("com.scott.other", "com.scott.other.TargetActivity"));

其中,前两种是用于匹配同一包内的目标,第三种是用于匹配其他包内的目标。需要注意的是,如果我们在Intent中指定了component属性,系统将不会再对action、data/type、category进行匹配。

6. Flags(标志位)

期望这个意图的运行模式

可参考文章025android初级篇之Android am命令的实现 中部分的FLAG的定义。

参考链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值