我的android 第27天 - Intent意图
Intent(意图) 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯。intent主要是用来启动其他的activity 或者service、BroadcastReceiver,所以可以将intent理解成组件之间的粘合剂。
一、intent 表现形式
1. 通过Context.startActivity()\startActivityForResult()启Activity
2. 通过 Context.startService() 启动一个服务,或者通过
Context.bindService() 和后台服务交互;
3. 通过广播方法(比如:Context.sendBroadcast()
,Context.sendOrderedBroadcast(), 发给broadcast receivers
二、属性设置
1.Action(动作)
* 系统动作
ACTION_CALL,ACTION_EDIT,ACTION_VIEW,ACTION_BATTERY_LOW
* 自定义动作
最好在前缀加包名(比如:cn.itcast.contact.SHOW_TEL)
2.Data(执行动作要操作的数据,数据用Uri表示)
3.type(数据类型,显式指定Intent的数据类型(MIME))
二、属性设置
4.category(类别)
*CATEGORY_DEFAULT
*CATEGORY_BROWSABLE
*CATEGORY_DEFAULT
*CATEGORY_HOME
*CATEGORY_LAUNCHER
5.component(组件)指定目标组件的类名称
6.extras(附加信息) 是所有附加信息的集合
三、显示意图与隐式意图
Intent可以划分成显式意图和隐式意图。
1. 显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定
了组件名,显式意图明确指定了Intent应该传递给哪个组件。
2.隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意
图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适
的组件来处理这个意图。
四、intent-filter(意图过滤器)
五、Bundle介绍:
Bundle类用作携带数据,它类似于Map,用于存放key-value名值对形式的值。相对于Map,它提供了各种常用类型的putXxx()/getXxx()方法,如:putString()/getString()和putInt()/getInt(),putXxx()用于往Bundle对象放入数据,getXxx()方法用于从Bundle对象里获取数据。Bundle的内部实际上是使用了HashMap<String, Object>类型的变量来存放putXxx()方法放入的值:
publicfinal class Bundle implements Parcelable, Cloneable {
......
Map<String, Object> mMap;
public Bundle() {
mMap = new HashMap<String, Object>();
...... }
public void putString(String key, String value) {
mMap.put(key, value);
}
publicString getString(String key) {
Object o = mMap.get(key);
return (String) o;
........//类型转换失败后会返回null,这里省略了类型转换失败后的处理代码
} }
在调用Bundle对象的getXxx()方法时,方法内部会从该变量中获取数据,然后对数据进行类型转换,转换成什么类型由方法的Xxx决定,getXxx()方法会把转换后的值返回。
六、Intent附加数据的两种写法
1. 第一种写法,用于批量添加数据到Intent:
Intentintent =new Intent();
Bundlebundle =new Bundle();//该类用作携带数据
bundle.putString("name","传智播客");
intent.putExtras(bundle);//为意图追加额外的数据,意图原来已经具有的数据不会丢失,但key同名的数据会被替换
2第二种写法:这种写法的作用等价于上面的写法,只不过这种写法是把数据一个个地添加进Intent,这种
写法使用起来比较方便,而且只需要编写少量的代码。
Intentintent =new Intent();
intent.putExtra("name","传智播客");
Intent提供了各种常用类型重载后的putExtra()方法,如: putExtra(String name, String value)、 putExtra(String name, long value),在putExtra()方法内部会判断当前Intent对象内部是否已经存在一个Bundle对象,如果不存在就会新建Bundle对象,以后调用putExtra()方法传入的值都会存放于该Bundle对象,下面是Intent的putExtra(String name, String value)方法代码片断:
publicclass Intentimplements Parcelable {
privateBundle mExtras;
public Intent putExtra(String name, String value) {
if (mExtras == null) {
mExtras = newBundle() }
mExtras.putString(name, value);
return this; }
下载视频代码
相关推荐
android intent
android整合--intent
android各组件详解- Intent.
android intent和intent action大全
Android自学笔记-14-意图(Intent)
Android-Intent详解
个人整理的Android Intent的使用介绍 Android 组件之间的信使Intent Android 中的数据存取和ContentProvider
nlp-intent-toolkit, 基于OpenNLP的意向识别 nlp-intent-toolkit使用OpenNLP的插槽识别意图。这是使用OpenNLP训练系统接受自然语言输入,特别是通过speech-to-text源进行输入,并返回带有参数的识别操作的一个例子。...
Java项目:在Android中使用Model-View-Intent(MVI)架构模式下对Kotlin协程的性能分析
Android经典设计源码-Intent_DataSample.rar
Android经典设计源码-Intent_TabHostSample.rar
Android经典设计源码-Intent_ComponentSample.rar
ZX-Android-Intent详解 让你更快了解
android 网格组件9宫格,GridView展示数据 3*3排列显示。鼠标点击其中一个网格 会触发事件,并传递参数
Android-Intent使用方法详解 配合(http://blog.csdn.net/daiyibo123/article/details/51227160)博客查看。使用Android stdio编写。
Android-Intent详解.doc
React Native Android模块使用Android的Intent操作将文本发送到可共享的应用程序或拨打电话或打开第三方应用程序。 当您需要在Android设备中的应用之间共享一些文本,并且如果您有有效的电话号码直接拨打电话(如果...
android-犯罪意图 android-criminal-intent 的教程应用程序
Intent切换.zip
React本机接收共享意图 一个React Native插件,使React Native应用程序能够从另一个应用程序接收共享的照片,视频,文本,URL或任何其他文件类型。 此外,还支持iOS Share扩展并自动启动主机应用程序。 查看提供的...