加入收藏 | 设为首页 | 会员中心 | 我要投稿 我爱制作网_潮州站长网 (http://www.0768zz.com/)- 物联安全、建站、操作系统、云计算、数据迁移!
当前位置: 首页 > 教程 > 正文

Android开发中Intent的使用概括

发布时间:2021-12-16 13:22:05 所属栏目:教程 来源:互联网
导读:Android手机软件开发中,Intent作为手机软件开发时很重要的对象需要引起我们的重视,实际上,intent也是体现Android开发具有其独特性的一个标志性的对象。 当一个Activity要启动另外一个Activity的时候,也许一个以前较为熟悉的模式是:调用一个new函数,直

Android手机软件开发中,Intent作为手机软件开发时很重要的对象需要引起我们的重视,实际上,intent也是体现Android开发具有其独特性的一个标志性的对象。
 
当一个Activity要启动另外一个Activity的时候,也许一个以前较为熟悉的模式是:调用一个new函数,直接创建具有窗口特征类的对象,又或者直接调用一个启动函数来启动。这种方式简洁、明了,但是却违背了Android开发的理念。Android使用Intent来“封装”程序的“调用意图”,不管程序想启动什么组件,启动一个Activity也好,一个service也好,或者一个Broadcast Receiver也好,Android统一使用Intent对象来封装这种“启动意图”。
 
除此之外,使用Intent也有好处,某些时候,应用程序只是想启动具有某些特征的组件或者应用程序,却并不想和这类程序有硬性的代码耦合;另外,应用程序有时候或许只是知道要启动的东西的一些特征,并不知道要启动的程序具体指的是什么(比如,某程序想启动发短信的应用程序,而此时系统中存在多个发信息的软件,我们无法知道要打开什么软件),此时程序要做的就应该是发送一个启动短信应用程序的意图,而不是指定要打开什么软件。当然更一般的,Intent也可以指定打开那个应用程序,而与一些程序有硬性的耦合关系。
 
Intent还是应用程序组件之间通信的重要媒介,两个Activity把需要交换的数据封装成Bundle对象,然后使用Intent来携带Bundle对象,这样就实现了两个Activity之间的数据交换。
 
Intent存在以下几个属性:Component,Action,Category,Data,Type,Extra,Flag七个属性,其中Component属性用来指定需要启动的目标组件,Extra属性用于携带需要交换的数据。
 
下面对Intent对象做详细的介绍:
 
1. Intent的Component属性
 
Component是用来指定启动目标组件的属性,标准的启动代码如下:
 
ComponentName comp = new ComponentName(firstActivity.this,secondActivity.class);
 
Intent intent = new Intent();
 
Intent. setComponent(comp);
 
startActivity(intent);
 
以上代码用来标准的创建ComponentName对象,进而调用Intent对象的setComponent()函数来为Intent设定相应的componentName,最后调用startAcitvity函数启动一个新的Activity。
 
实际上,当需要为Intent设定Component属性的时候,Intent已经为我们提供了一个简单的构造器,使用方法如下(我们经常使用的方式):
 
Intent intent = new Intent(firstActivity.this,senondActivity.class);
 
值得一提的是,在secondActivity组件中,可以使用getIntent()方法取得调用次组件的Intent对象,进而,getXXX方法在这里就可以各种使用了。
 
2. Intent 的Action与Category属性
 
Action和Category属性都是普通的字符串,其中Action代表了抽象出来的“动作”,Category属性用来和Action属性配合使用,表达出要启动某组件的意图。
 
具有<intent-filter…/>标签的Activity均有可能会被启动。
 
比如:
 
Public final staticString SOME_ACTION = “org.someaction.SOME_ACTION”
 
// 这是一个字符转,随便设定,但是一般都具有一些抽象的语义。
 
在这个Activity种的某个按钮的onClick()方法中加入:
 
Intent intent = newIntent();
 
Intent.setAction(thisActivity.SOME_ACTION);
 
startActivity(intent);
 
这样的代码并没有具体指出要启动哪个Activity,这样就脱离了“硬编码”,但是具体要启动哪个Activity呢,这将取决于Activity配置文件中的<intent-filter…/>标签。
 
<intent-filter…/>是AndroidManifest.xml文件中<activity…/>元素的子元素,需要做的,就是给你实际需要相应这个意图的Activity添加<intent-filter…/>标签,在<intent-filter…/>下,存在着三种标签:1.<action…/>2.<category…/>3.<data…/>,其中指定android:name属性之后,这个activity便具有了相应上面意图的属性了。
 
对于上面的意图,则添加这样的代码(当然要在<intent-filter…/>标签下):
 
 <action android:name = “org.someaction.SOME_ACTION”/>
 
需要一提的是:一个Intent对象最多只能包含一个Activity属性,程序调用setAction(Stringstr)来设定Action的属性值;而一个Activity可以有多个Category属性,程序可以调用addCategory(String str)来添加Category属性。当程序创建Intent的时候,创建的Intent属性自动启动属性值为Intent.CATEGORY_DEFAULT常量,其值为“android.intent.category.DEFAULT”,所以,在配置某个Activity属性的时候<categoryandroid:name = “andrid.intent.category.DEFAULT ”>是可以添加到配置文件当中的。
 
实际上Android内部提供了大量的标准的Action和Category常量。
 
总结如下:
 
Action常量
 
对应的android:name 设定
 
简单说明
 
ACTION_MAIN
 
Android.intent.action.MAIN
 
应用程序入口
 
ACTION_VIEW
 
Android.intent.action.VIEW
 
显示指定数据
 
ACTION_ATTACH_DATA
 
Android.intent.action.ATTACH_DATA
 
指定某模块数据被附加的地方
 
ACTION_EDIT
 
Android.intent.action.EDIT
 
编辑指定数据
 
ACTION_PICK
 
Android.intent.action.PICK
 
从列表中选择某项并返回所选数据
 
ACTION_CHOOSER
 
Android.intent.action.CHOOSER
 
显示一个Activity选择器
 
ACTION_GET_CONTENT
 
Android.intent.action.GET_CONTENT
 
让用户选择数据,并返回所选
 
ACTION_DIAL
 
Android.intent.action.DIAL
 
显示拨号面板
 
ACTION_SEND
 
Android.intent.action.SEND
 
直接发送数据
 
ACTION_SENDTO
 
Android.intent.action.SENDTO
 
直接发送消息
 
ACTION_ANSWER
 
Android.intent.action.ANSWER
 
应答电话
 
ACTION_INSERT
 
Android.intent.action.INSERT
 
插入数据
 
ACTION_DELETE
 
Android.intent.action.DELETE
 
删除数据
 
ACTION_RUN
 
Android.intent.action.RUN
 
运行数据
 
ACTION_SYNC
 
Android.intent.action.SYNC
 
执行数据同步
 
ACTION_PICK_ACTIVITY
 
Android.intent.action.PICK_ACTIVITY
 
用于选择activity
 
ACTION_SEARCH
 
Android.intent.action.SEARCH
 
执行搜索
 
ACTION_WEB_SEARCH
 
Android.intent.action. WEB_SEARCH
 
直径web搜索
 
ACTION_ FACTORY_TEST
 
Android.intent.action.FACTORY_TEST
 
工厂测试入口点
 
这里仅仅摘录一些,如果想了解全部的ACTION,可以直接查看Android的标准API中有关Intent的说明部分。

(编辑:我爱制作网_潮州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读