Intent,最简单的回答是装载有数据的动作(an action with it's assotiated data payload),也就是你想要用这个数据做什么。我们可以使用它来调用内部或是外部组件(从我们的应用中调用其他的应用程序),通常是个Activity.
对于一个给定的Intent,什么组件被调用基本上是依赖于Intent的action和data.要使一个组件能被其他的组件调用,我们需要在AndroidManifest.xml中注册这个活动。就像这样:
<activity android:name="YOUR_ACTIVITY_NAME"
android:label="Basic View Tests">
<intent-filter>
<action android:name="YOUR_PACKAGE_NAME.intent.action.YOUR_ACTIVITY_NAME"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
这里注册不仅仅使这个活动可用来被其他组件调用,也表明可以被什么样action的Intent来调用,之后可以这样调用它
String actionName= " YOUR_PACKAGE_NAME.intent.action.YOUR_ACTIVITY_NAME";
Intent intent = new Intent(actionName);
parentActivity.startActivity(intent);
你也可以直接指定要调用的组件完整类名(包名+类名),这样系统就会直接去调用那个类,而不用去判断哪个组件来处理这个intent.如:
Intent intent = new Intent(parentActivity,YOUR_CLASS_NAME);
parentActivity.startActivity(intent);
有一些系统预定义的action与要调用组件之间有一对一的关系,比如:
Intent.ACTION_DIAL对应电话拨号程序的拨号器Dialer,不需要任何data
Intent.ACTION_CALL对应电话拨号程序的Call,需要setData(Uri.parse("tel:对方号码"))
但是,对于ACTION_VIEW通用动作Android如何知道那个活动要被调用,这种情况,Android更多依赖于Intent的data URI.Android会查看URI的模式,检索所有注册的Activities看哪些能够理解这模式,也包括要能够处理VIEW动作,然后调用那个正确的Activity。浏览器Activity注册了针对http数据模式的VIEW intent,在manifest中就像
<activity…..>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<data android:scheme="http"/>
<data android:scheme="https"/>
</intent-filter>
</activity>
e.g.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.google.com") );
parentActivity.startActivity(intent );
这样,系统就知道要打开浏览器,来访问Google了。
分享到:
相关推荐
Android Intent 学习笔记
Android Activity和Intent机制学习笔记
android的intent学习笔记.pdf
Android自学笔记-14-意图(Intent)
Android_Activity和Intent机制学习笔记
android的intent学习笔记(20220104210037).pdf
入门必须要看的android笔记,由浅入深,activitiey,intent。。。。
Android学习笔记(七):多个Activity和Intent
Android学习笔记(三五):再谈Intent(下)-一些实践
Android开发学习笔记(整理),整理论坛android学习笔记,较完整的讲解了android的内容。包括:view、activity、service、intent、广播机制、http连接、数据sqllite存储、后台线程、各种layout、偏好、本地文件操作、...
Android学习笔记(1)-永远不变的Hello World Android学习笔记(2)-初识Activity Android学习笔记(3)-Activity的生命周期 Android学习笔记(4)-学习Intent的使用,
整理论坛android学习笔记,较完整的讲解了android的内容。包括:view、activity、service、intent、广播机制、http连接、数据sqllite存储、后台线程、各种layout、偏好、本地文件操作、apdapter等几乎全部内容。非常...
Android学习笔记(三四):再谈Intent(上)-一些知识
Android开发笔记,内容涉及模拟器参数、进程与线程、Android 释放手机资源,进程释放优先级、分析HelloAndroid、添加编辑框与按钮、使用Intent启动另一个Activity、在不同Task中启动Activity、Intent与Intent ...
目录,整理论坛android学习笔记,较完整的讲解了android的内容。包括:view、activity、service、intent、广播机制、http连接、数据sqllite存储、后台线程、各种layout、偏好、本地文件操作、apdapter等几乎全部内容...
本文讲述了Android开发笔记之Intent初级学习教程。分享给大家供大家参考,具体如下: 项目创建步骤: New Android Project-> Project name:Intent Build Target:Android 2.2 Application name:IntentDemo Package ...
该文档介绍了我在android studio开发中使用的一些常用和实用的技术,包括intent 广播机制,runOnUiThread,AlertDialog显示自定义布局文件问题,横竖屏切换保存状态onSaveInstanceState
学习笔记 : 一个带返回值的Intent跳转实例
NULL 博文链接:https://ln-ydc.iteye.com/blog/1905353
Android学习笔记之bundle用法源码,非常非常简单,看了就懂,看了就能掌握bundle的基础用法,以及如何通过Intent传递及取出bundle