使用intent来启动activity

标签: intent activity | 发表时间:2014-06-09 07:18 | 作者:howlaa
出处:http://blog.csdn.net

Intent最常见的用途是绑定应用程序组件,并在应用程序之间通信.Intent用来启动Activity,允许创建不同屏幕的一个工作流。

要创建并显示一个Activity,可以调用startActivity,并传递给它一个Intent,如:

startActiiy(myintent);

可以构造Intent来显示地指定要打开的Activity类,或者包含一个目标Activity必须执行的动作。在后面一种情况时,运行时将会使用一个成为"intent解析"的过程来动态选择activity.

如果想追逐来自子activity的反馈,可以使用startActivityForResult方法。

要显示地选择要启动的Activity类,可以创建一个新的Intent来指定当前activity的上下文以及要启动的Activity类,然后把这个Intent传递给startActivity.

Intent intent = new Intent(AActivity.this,MyOtherActivity.class);
startActivity(intent);

在调用activity之后,新的activity将会被创建,将会依次调用其oncreate(),onstart(),onresume(),它会移动到activity栈的顶部。

调用新Activity的finish或按下设备的返回键将关闭该activity,并把它从栈中移除。


隐式的intent和运行时迟绑定

隐式的Intent提供了一种机制,可以让匿名的应用程序组件响应动作请求。这意味着可以要求系统启动一个可执行给定动作的Activity,而不必知道需要启动哪个应用程序或activity.

例如可以使用一个隐式的intent来请求一个在电话号码(表示为一个URI)上执行动作(拨号)。

Intent intent = new Intent(Intent.ACTION_DIAL,Uri.parse("tel:13195338962"));
startActivity(intent);

android会解析这个intent,并启动一个新的Activity,该activity会提供对这个电话号码进行拨号的动作,就是我们手机自带拨号的那个界面。

当构建一个新的隐式的intent时,需要指定要执行的动作。另外,也可以提供执行那个动作需要的数据的URI。还可以通过向intent添加extra来向目标activity发送额外的数据。

当使用intent来启动一个activity时,android 将在运行时把它解析为最适合在指定的数据类型上执行所需动作的类。如果多个Activity都能够执行指定的动作,则会向用户呈现各种选项。


确定intent能否解析

在自己的应用程序中利用第三方应用程序的Activity和Service是十分方便的。但是,你无法保证用户设备上安装了特定的某个应用程序,或者设备上有能够处理你的请求的应用程序。因此,在调用startActivity之前,确定调用是否可以解析为一个Activity是一种很好的做法。

通过调用intent的resolveActivity方法,并向该方法传入包管理器,可以对包管理器进行查询,确定是否有Activity能够启动以响应intent.

PackageManager pm = getPackageManager();
if(intent.resolverActivity(pm) != null){
	startActivity(intent);
}

从activity返回结果

通过startActvity启动的Activity独立于其父activity,并且在关闭时不会提供任何反馈。

当需要反馈时,可以启动一个activity作为另一个activity的子activity,用它向父actvity传递结果。子activity只是以一种不同的方式启动的activity.因此,必须在mainfest文件中注册他们,就像其他的activity一样。

startActivityForResult(intent,1);

后面是接收返回值的标识

子activity通过设置setResult返回结果:参数为结果码和数据本身

setRsult(ACTIVITY.RESULT_OK,new Intent(Intent.ACTION_PICK,"ssss"););


父actvity通过OnaCTIVITYResult来处理子activity返回的结果。

@override
public void onActivityResult(int requestCode,int resultCode,Intent data){
super....
	switch(requestCode){
	case (1):
		if(rsultCode == Activity.RESULT_OK){
		String s = data.getData();
	}
}
}


作者:howlaa 发表于2014-6-8 23:18:26 原文链接
阅读:1 评论:0 查看评论

相关 [intent activity] 推荐:

activity、 intent 、intent filter、service、Broadcast、BroadcaseReceiver解释

- - CSDN博客推荐文章
Android中,Activity是所有程序的根本,所有程序的流程都运行在Activity之中,Activity具有自己的生命周期(由系统控制生命周期,程序无法改变,但可以用onSaveInstanceState保存其状态). 对于Activity,关键是其生命周期的把握(如那张经典的生命周期图=.=),其次就是状态的保存和恢复(onSaveInstanceState onRestoreInstanceState),以及Activity之间的跳转和数据传输(intent).

使用intent来启动activity

- - CSDN博客推荐文章
Intent最常见的用途是绑定应用程序组件,并在应用程序之间通信.Intent用来启动Activity,允许创建不同屏幕的一个工作流. 要创建并显示一个Activity,可以调用startActivity,并传递给它一个Intent,如:. 可以构造Intent来显示地指定要打开的Activity类,或者包含一个目标Activity必须执行的动作.

Android 之 Activity和Intent用法介绍

- - 移动开发 - ITeye博客
                            Activity 生命周期. 1、 Activity介绍.         Activity 是Android应用程序和用户交互的窗口;.     2)  运行时的Activity特点:.         i.  可见的;. 2、 Activity的生命周期.

Activity之间使用intent传递大量数据带来问题总结

- - CSDN博客推荐文章
转载请注明: 大飞  http://blog.csdn.net/rflyee/article/details/47441405. Activity之间使用Parcel传递大量数据产生的问题. Activity之间通过intent传递大量数据,导致新Activity无法启动. Activity之间数据传递方式总结参考  这 里.

Android Intent调用大全、系统自带Intent调用大全

- - 移动开发 - ITeye博客
1.从google搜索内容 . 6.调用发短信的程序 . 9.发送Email . 10.播放多媒体 . 14.从gallery选取图片 . 16.显示应用详细列表 . 刚才找app id未果,结果发现用package name也可以 . 18.打开联系人列表 . 19.打开另一程序 . 需要添加 这个权限到androidmanifest.xml.

Android中隐式意图(Intent)用法

- - CSDN博客推荐文章
         Intent对象在Android应用开发中起到很大的作用,例如激活组件(Activity,Service 等组件)或者携带数据的功能,相信大家在开发中经常会用到这些功能,Android中的意图分为 显式意图和 隐式意图,显式意图大家应该用得比较多,但隐式意图在开发过程中也是必不可少的.

(转)intent 的URI功能示例总汇

- - 移动开发 - ITeye博客
一、打开一个网页,类别是Intent.ACTION_VIEW. 二、打开地图并定位到一个点. 三、打开拨号界面,类型是Intent.ACTION_DIAL. 四、直接拨打电话,与三不同的是,这个直接拨打电话,而不是打开拨号界面. 五、卸载一个应用,Intent的类别是Intent.ACTION_DELETE.

网页链接触发原生Intent

- - CSDN博客推荐文章
人们每天都要访问大量的手机网页, 如果把手机网页(Web)和应用(App)紧密地联系起来, 就可以增大用户的访问量, 也有其他应用场景, 如 网页中调用支付链接, 新闻中启动问诊界面, 提供优质的原生功能等等.. 如何在网页(Web)中, 通过Intent直接启动应用(App)的Activity呢.

Android Activity与Service通信

- - CSDN博客移动开发推荐文章
一、当Acitivity和Service处于同一个Application和进程时,通过继承Binder类来实现.      当一个Activity绑定到一个Service上时,它负责维护Service实例的引用,允许你对正在运行的Service进行一些方法调用. 比如你后台有一个播放背景音乐的Service,这时就可以用这种方式来进行通信.

从网页启动Activity

- - 移动开发 - ITeye博客
正好Android SDK 给我们提供了解决方案,在网页中点击某个链接时,会匹配到Activity所配置的隐式Intent(配置在Manifest文件中). 第一步:在Manifest文件中给TestActivity配置一个隐式Intent. 第二步:这时,当在网页中点击链接Start TestActivity就会启动TestActivity了.