android学习五 Intent
2.Android系统定义了很多Intent
http://developer.android.com/guide/components/intents-common.html
3.Intent
Intent包括的内容可以有以下一个或多个
- 操作
- 数据
- extra数据
- 组件名称
intent.setData(Uri.parse("http://www.google.com")); //数据
putExtra(String name,...);//extra数据
intent.setComponent(new ComponentName("com.android.contacts","com.android.contacts.DialContactsEntryActivity"));//组件名称
4.数据是对URI进行解析的结果,可能是http网页,也可能是ContentProvider...这根据数据模式来确定例如:content:,file:等。
接收的Intent需要通过Intent过滤器来声明是否能处理这种数据模式。
5.预定义的操作
http://developer.android.com/guide/topics/manifest/data-element.html
6.extra数据可以给目标组件提供更多的信息。 extra data通过android.os.Bundle表示,就是键值对的形式,键通常以包名开头,值是任意对象。需要实现android.os.Parcelable接口。
putExtra方法是复制操作。
7.使用组件名称直接调用组件。包名和类名需要完全限定。
8.组件的类别。
预定义的category
http://developer.android.com/reference/android/content/Intent.html#CATEGORY_ALTERNATIVE
9.Intent包括的4部分内容中,如果没有指定组件名称,则为隐式Intent,对于使用隐式Intent来启动其他组件,则对目标组件的确定就是通过剩下3部分综合作用来确定的。
应用应该在声明文件中编写Intent过滤器,用于android系统确定Intent与应用是否匹配。Intent过滤器的格式
<intent-filter>
<action android:value="android.intent.action.MAIN" />
<category android:value="android.intent.category.HOME" />
<category android:value="android.intent.category.DEFAULT />
....
</intent-filter>
匹配的基本规则:操作(action),类型(category),数据特征(data android:name 和 data andriod.mimeType)必须与过滤器匹配。
具体的规则:
操作:过滤器不包含则匹配所有操作,如果包括则必须匹配。
数据:过滤器没有指定数据特征则不匹配任何包括数据特征的Intent调用,如果包括则必须匹配。
数据类型 (data android:mimeType):必须匹配。 数据类型的确定有两种方式
a.传入的URI是内容或文件URI,这由ContentProvider或android来确定
b.显示获取intent.getType()。这个需要在客户端构造Intent的时候调用setType(),调用setType就不应该设置URI,因为setType会自动设置。
数据模式,数据授权,数据路径协同匹配,即最长匹配。
Intent类别:调用intent中的所有type必须包含在intent过滤器中。调用intent如果没有包含任何类别则当做default类别,所以希望通过隐式Intent调用的组件必须声明DEFAULT类别。
android学习五 Intent的更多相关文章
- Android学习之 Intent详解
一. Intent 作用 Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯.比如说调用startActivity()来 ...
- (转载)Android学习之Intent使用
ndroid学习之Intent使用 1.使用显示Intent Intent intent = new Intent(FirstActivity.this,SecondActivity.class) ...
- Android学习笔记-Intent(一)
Intent对象在Android官方API这样描述:It is a passive data structure holding an abstract description of an opera ...
- Android学习之Intent传递数据
Intent在Activity中的作用主要是有两个: 1.启动目标Activity 2.传递数据 Intent在传递数据时分两种情况:向下一个Activity传递数据和从下一个Activity返回数据 ...
- Android学习之Intent使用
1.使用显示Intent Intent intent = new Intent(FirstActivity.this,SecondActivity.class); startActivity(inte ...
- android学习五---OpenCV for android环境搭建
学习android的目的是想在手机上实现计算机视觉的算法.一般算法的研究都是在Matlab上进行,但是手机平台没有那么多的计算资源,用matlab显然是不太现实的.而OpenCV是基于C++语言编写的 ...
- Android学习笔记--Intent
Intent是android四大组件之间交互的一种重要方式.Intent可以指明当前要执行的动作,也可以指明要传递的数据.Intent可以用来启动活动,启动服务,发送广播. Intent分为两种:1. ...
- Android学习笔记Intent二
上篇随笔大概写了了Intent学习的大纲,这篇通过代码理解下Intent的ComponentName属性的使用 ComponentName,中文意思是组件名称,通过Intent的setsetCompo ...
- Android学习五:Content Provider 使用
1ContentProvider相关知识1.1在安卓应用中,通过文件方式对外共享数据,需要进行文件操作读写数据:采用sharedpreferences共享数据,需要使用sharedpreference ...
随机推荐
- 【[USACO08NOV]奶牛混合起来Mixed Up Cows】
首先我们能够一眼看到4 <= N <= 16,那么就是它了,我们要压缩的状态就是它了 那么之后能我们用这个状态表示什么呢,我们要表示的显然是每只奶牛是否在队伍中 比如说10吧,转成二进制后 ...
- git 比较不同版本文件的差异
Git 比较不同版本文件差异的常用命令格式: git diff 查看尚未暂存的文件更新了哪些部分 git diff filename 查看尚未暂存的某个文件更新了哪些 git diff –cached ...
- JDBC(5)ResSetMetaData&DatabaseMetaData&获取数据库主键的值
ResSetMetaData 可用于获取关于 ResultSet 对象中列的类型和属性信息的对象: getColumnName(int column):获取指定列的名称 getColumnCount( ...
- canny算子求图像边缘,edgebox那部分
过程: 1. 彩色图像转换为灰度图像 2. 对图像进行高斯模糊 3. 计算图像梯度,根据梯度计算图像边缘幅值与角度(这里其实用到了微分边缘检测算子来计算梯度幅 ...
- JavaSE注释
注解在JavaSE中算是比较高级的一种用法了,为什么要学习注解,我想大概有以下几个原因: 1. 可以更深层次地学习Java,理解Java的思想. 2. 有了注解的基础,能够方便阅读各种框架的源码,比如 ...
- HDU 1009 FatMouse' Trade(简单贪心 物品可分割的背包问题)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1009 FatMouse' Trade Time Limit: 2000/1000 MS (Java/O ...
- SignalR 教程一
转帖官方教程:Tutorial: Getting Started with SignalR 2 and MVC 5 http://www.asp.net/signalr/overview/gettin ...
- Python 学习笔记(十)Python集合(二)
集合常用的方法 add() 向集合中增加一个元素,如果集合中已经有了这个元素,那个这个方法就会失效 >>> help(set.add) Help on method_de ...
- JS中some(),every(),fiflter(),map()各种循环的区别理解
1.some():返回一个Boolean,判断是否有元素符合func条件const arr = [1,2,3,4]; arr.some((item)=>{return item>1}) 打 ...
- SQL 存储过程生成
use workflow; GO /****** 对象: StoredProcedure [dbo].[pro_GenerateProGet] 脚本日期: 08/03/2012 11:26:43 ** ...