Android之Intent
前言:大家都知道Android程序的实现一般都由四大组件构成:
- Activity :Android程序实现功能的主体,提供了和客户交互的界面,也提供了和后台交互的功能。
- Service :是一个没有界面的activity,主要用于后台运行的程序。
- Broadcast :是当前程序和系统之间通信的工具。
- ContentProvider :android程序,管理资源的一种工具。
上面这4个组件都需要在manifest里面注册才能够使用,manifest就相当于android程序的大管家。当然光有组件还不够,要想实现组件与组件之间数据(或叫资源)的传递,离不开一个关键“人物”,那就是Intent类。至于什么是Intent呢?下面我就简单的跟大家介绍一下。
一、什么是Intent?
Intent这个单词在英文里的意思是“目的,意图”。放在计算机里是什么意思呢?简单来说就是,Android系统建立了一种机制来协助应用程序之间数据(或资源)的传递和通信。那么怎么传递呢?不用担心,Android为此创建了一个类,那就是Intent。你可以把它看成一个桥梁或纽带,它以应用程序之间和上述4大组件之间的数据交互为使命。所以它的意图很明显了,就是数据(资源)的传递。
Intent在程序当中又是一种运行时绑定机制,也就是说它可以在程序运行的时候连接任意两个不同组件。通过Intent,你可以向Android系统进行请求,Android系统会根据你的请求内容选择相应的组件进行响应。
还有一个原因,之所以要用Intent来建立连接,就是为了降低程序之间的耦合度。(耦合就是指两个应用程序之间的依赖关系)
二、创建Intent的三种方式:
1. Intent intent = new Intent(起始组件对象,目标组件类.class)
2. Intent intent = new Intent()
Intent.setClass(起始组件对象,目标组件对象.class)
3. 获取上一个Activity传递过来的intent对象(Intent = getIntent())
三、Intent类中包括的一些成员变量(或者属性)
1.mComponent (目的组件):它是ComponentName的类型,是制订组件间跳转的源组件和目标组件的包名,用于显示意图。它明确指定了Intent目标组件的类名称。这个组件包括包名称和类名称,而且必须要声明在manifest文件中。
2.mAction(动作):它表示操作的动作,是一个字符串常量。它是一个默认的字符串,是提前预定义好的,就是让所在当前这个activity为项目的入口,并且需要在Manifest文件中的intent-filter标签中设置。
3.mCategory(类别) : 被启动组件的类别。一个Intent中可以包含多个category描述的信息。要注意,在manifest文件中要同时注册action和category才行,它们一般一起使用,在代码当中,如果没有指定category的话,就必须使用默认的Category。
4.mData(数据): 该参数是Uri类型存放操作的数据,就是比如:访问的网址,拨打电话等,作用就是向Action提供操作的数据。所谓Uri就是统一资源标识符(包括:http://;主机名;资源索引值;),android框架系统定义了Uri类来处理Intent对象要操作的数据。
5.mType(数据类型): 显示指定数据类型(MIME)。一般Intent的数据类型能够根据数据本身进行判定,但是通过设置这个属性,可以强制采用显示指定类型而不再进行推导。一般前面是大类型后面是小类型。
Type属性在Xml文件中只能够命名为mimeType:(下图为例)
<intent-filter>
<action android:name="com.jaoco.SECOND_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:scheme="http"
android:host="www.jaovo.com"
android:path="/android"
android:port=""
android:mimeType="image/png"
/>
</intent-filter>
设置Type属性值的方法:public void setType(String type)
设置data和type属性值的方法:public void setDataAndType(Uri uri,String type)如果要同时设置Data和Type的值,只能用这个方法,因为setType()和setData()都会默认将对方设置为null。
6.mExtras(扩展信息):Intent类中携带的所有的数据都包装在这个类中。
7.mFlags(标志位):它是一个期望意图运行的模式。
Android之Intent的更多相关文章
- Android 笔记 Intent and Bundle day7
学习了Intent与Bundle的使用,进行应用中的交互 package com.example.intent; import android.app.Activity; import android ...
- Android 通过 Intent 传递类对象或list对象
(转:http://www.cnblogs.com/shaocm/archive/2013/01/08/2851248.html) Android中Intent传递类对象提供了两种方式一种是 通过实现 ...
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putP ...
- Android中Intent传值与Bundle传值的区别详解
Android中Intent传值与Bundle传值的区别详解 举个例子我现在要从A界面跳转到B界面或者C界面 这样的话 我就需要写2个Intent如果你还要涉及的传值的话 你的Intent就要写两 ...
- android使用Intent操作拨打号码发送短信
Activity程序Activity.java package com.example.intentcaseproject; import android.net.Uri; import androi ...
- Android 通过 Intent 传递类对象
Android中Intent传递类对象提供了两种方式一种是 通过实现Serializable接口传递对象,一种是通过实现Parcelable接口传递对象. 要求被传递的对象必须实现上述2种接口中的一种 ...
- android startActivityForResult(Intent intent, int requestCode) 整理与总结! .
假设有两个Activity,主界面A,功能界面B,由A启动B,并传数据给B,B在经过处理后把数据传回给A. 先是A传B: Bundle bundle = new Bundle();bundle.put ...
- android 使用intent传递参数实现乘法计算
主界面上是两个EditText和一个按钮.用于输入两个数字参数. calcute.xml: <?xml version="1.0" encoding="utf-8& ...
- android之intent显式,显式学习
intent,意图 当从一个Activity到另一个Activity时调用,这里重点学习显式,隐式的使用 使用语句上的区别: 隐式意图: 显式意图: setAction ...
- Android利用Intent与其他应用交互
前言: 上一篇博客给大家聊了Intent的定义,分类.属性和功能,相信大家对于Intent在Android中的作用已经清楚,这一篇博客将会给大家聊Intent的用法. Android系统的一个重要特性 ...
随机推荐
- hdu 4940 Destroy Transportation system(水过)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4940 Destroy Transportation system Time Limit: 2000/1 ...
- shell脚本加密
如何保护自己编写的shell程序要保护自己编写的shell脚本程序,方法有很多,最简单的方法有两种:1.加密 2.设定过期时间,下面以shc工具为例说明: 一.下载安装shc工具shc是一个加密s ...
- C库专题(Day1)
<assert.h> C库宏-assert() 定义:#define assert(ignore) ((void)0) void assert(int experession); ex ...
- Beacon浅析
作者:hongbosun 一.Beacon简介 Beacon是基于BLE技术实现的物理设备.BLE(全称Bluetooth Low Energy)是蓝牙4.0技术规范的一部分.它起源于Nokia的Wi ...
- iis配置出现的问题及解决
唯一密钥属性“value”设置…无法添加类型为add 在配置IIS7.5时,会出现 在唯一密钥属性“value”设置为“default.aspx”(或者index.asp等)时,无法添加类型为“add ...
- Fragment的生命周期&同一Activity下不同Fragment之间的通信
Android开发:碎片Fragment完全解析(2) Fragment的生命周期 和Activity一样,Fragment也有自己的生命周期,理解Fragment的生命周期非常重要,我们通过代码的方 ...
- (一)Knockout - 入门
knockout 简介 knockoutjs的实现依照[MVVM模式],Model-View-ViewModel. Model,用来聚合server端数据 ViewModel,描述的数据以及操作,是行 ...
- AJAX 跨域
1.说到ajax就会遇到的两个问题 1.1AJAX以何种格式来交换数据 1.自定义字符串 2.XML描述 3.JSON描述(建议使用) 1.2如 ...
- 3月19日 html(一) html基础内容
---恢复内容开始--- 今天学习了html的第一节课,是些比较简单的基础知识,知道如何向网页里添加文本.图片.表格.超链接之类的,如何去编写这些代码. html(hyper text makeup ...
- Webpack: 为Web开发而生的模块管理器[转]
Webpack: 为Web开发而生的模块管理器 原文地址:http://hanjianwei.com/2014/09/10/webpack-package-manager-for-web/ 10 Se ...