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系统的一个重要特性 ...
随机推荐
- (转)iOS 各种控件默认高度(图示)
1.状态栏 状态栏一般高度为20像素,在打手机或者显示消息时会放大到40像素高,注意,两倍高度的状态栏在好像只能在纵向的模式下使用.如下图 用户可以隐藏状态栏,也可以将状态栏设置为灰色,黑色或者半透明 ...
- Android编程之ActivityManager: Segmentation fault
今天运行代码时,出现了一个不能运行的故障问题:ActivityManager: Segmentation fault 是的,这个原因网上有诸多解释:包名不能是中文或者非法字符,或者重启新的avd来解决 ...
- 经常使用ASCII码表(方便查找)
经常使用ASCII码表(方便查找) 键盘 ASCII码 键盘 ASCII码 键盘 ASCII码 键盘 ASCII码 ESC 27 7 55 O 79 g 103 SPACE 32 8 56 P 80 ...
- [Angular 2] Transclusion in Angular 2
Link: Blog Single transclude: <ng-content></ng-content> Multi-translcude: <ng-content ...
- 杭州电 1372 Knight Moves(全站搜索模板称号)
http://acm.hdu.edu.cn/showproblem.php?pid=1372 Knight Moves Time Limit: 2000/1000 MS (Java/Others) ...
- rsync在windows和linux同步数据的配置过程
centos7.0安装rsync3.0.9-17.el7 yum install rsync ===================================================== ...
- (二)《Java编程思想》——t h i s 关键字
this 关键字(注意只能在方法内部使用)可为已调用了其方法的那个对象生成相应的句柄.可象对待其他任何对象句柄一样对待这个句柄. package chapter4; //: Leaf.java // ...
- HTML与CSS入门——第五章 使用文本块和列表
知识点: 1.在页面上对齐文本的方法 2.三种HTML列表的使用方法 3.在列表中放置列表的方法 5.1 在页面上对齐文本: 父元素内子元素文本的居中:在控制父元素的text-align:center ...
- C复习手记(Day2)
1.共用体 共用体是一种特殊的结构,允许在相同的位置存储不同的数据类型.可以定义一个带有多成员的共同体,但是任何时候只能有一个成员带有值. 定义共用体: union Data { int i; flo ...
- (转)asp.net注册实现下一步
在asp.net中有两种容器控件,其中包括panel和placeholder控件. 使用panel控件可以对控件进行分组.一帮助组织web窗体也的内容,将控件组织在面板中,可提供有关在运行时控件应如何 ...