android Intent和IntentFilter

android的应用程序包含三种重要的组件:Activity、Service、BroadcastReceiver,应用程序采用一致的方式来启动他们——都是依靠Intent来进行启动。Intent就封装了程序想要启动的程序意图,不仅如此,Intent还可用于与被启动组件交换信息。

 

Intent的属性及intent-filter配置:

Intent的Component属性需要接受一个ComponentName对象,ComponentName对象包含如下几个构造器:

1、ComponentName(String pkg, String cls):创建pkg所在包下的cls类对应的组件

2、ComponentName(Context pkg, String cls):创建pkg所对应的包下的cls类所对应的组件

3、ComponentName(Context pkg, Class<?> cls):创建pkg所对应的包下的cls类所对应的组件

 

上面构造器的本质就是一个,这说明创建一个ComponentName需要指定包名和类名——这就可以唯一地确定一个组件类,这样应用程序即可根据给定的组件类去启动特定的组件。

 

ComponentName comp = new ComponentName(this, NewActivity.class);    
Intent intent = new Intent();
intent.setComponent(comp);startActivity(intent);

上面的也可以写成如下的形式:

Intent intent = new Intent(this, NewActivity.class);


当程序通过Intent的Component属性(明确指定启动那个组件)启动组件时,被启动的组件几乎不再需要使用<inetnt-filter....../>元素进行配置了。

 

Action、Category属性与intent-filter配置

Intent intent = new Intent();
// 为Intent对象设置Action属性(属性值是一个普通的字符串)
intent.setAction("helloworld");
startActivity(intent);

上面的代码会根据Intent来启动Activity,但是Intent并未以“硬编码”的方式指定要启动那么Activity,程序到底会启动那个Activity这取决于Activity配置中<intent-filter....../>元素的配置。

<inetnt-filter....../>元素里通常可包含如下的子元素:

1、0~N个<action....../>子元素

2、0~N个<categtory....../>子元素

3、0~1个<data....../>子元素

一个Intent对象只能包含一个Action属性,程序可以调用Intent的setAction(String str)方法来设置Action属性,但是一个Intent对象可以包含多个Category属性,程序可以调用Intent的addCategpry(String str)方法添加Category。当程序创建Intent时,该Intent默认启动Category属性值为Intent.CATEGORY_DEFAULT常量(常量的值为android.intent.category.DEFAULT)的组件。当Activity配置中的<action....../>中有一个和Intent中的action属性相同时,就表明该Activity能响应该Intent。

 

可以通过指定Action、Category调用系统的Activity。

 

Data、Type属性与intent-filter配置:

Data属性通常用于向Action属性提供操作的数据,Data属性接受一个Uri对象,一个Uri对象通常如下形式的字符串来表示:

content://com.android.contacts/contacts/1

tel:123

上面所示的两个字符串的冒号前面大致指定了数据的类型,冒号后面的是数据部分。因此一个合法的Uri对象既可以决定操作那种类型的数据,又可指定具体的数据值。

 

Type属性则用于明确指定Data属性指定数据的类型或者MIME类型。

 

实际上Data属性值可以分为两部分:数据类型部分和数据部分。例如:content://com.android.contacts/contacts/1

content:前缀:表明该数据类型为联系人信息。

//com.android.contacts/contacts/1:表明操作_id为1的联系人数据

 

一旦为Intent同时指定了Action、Data属性,那么android讲可根据指定的数据类型来启动特定的应用程序,并对指定的数据执行相应的操作。

 

Extra属性:

Intent的Extra属性通常用于在多个Action之间进行数据交换,Intent的Extra属性值是一个Bundle对象,Bundle对象就像一个Map对象,可以存放多组key-value对,这样就可以通过在不同的Activity之间进行数据交换。

 

转载于:https://www.cnblogs.com/heml/p/3564767.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/575580.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

冒泡排序的双重循环理解

主要说一下冒泡排序的一些关键地方的个人理解&#xff0c;比如算法思想&#xff0c;两个循环的作用意义&#xff0c;中间循环变量范围的确定等。 原理&#xff1a;比较两个相邻的元素&#xff0c;将值大的元素交换至右端。思路&#xff1a;依次比较相邻的两个数&#xff0c;将小…

全程软件测试之测试需求分析与计划(2)

2.3 测试工作量估算 在确定了测试需求、明确了测试范围之后&#xff0c;就需要明确测试任务&#xff0c;估算测试工作量。基于质量需求和测试的工作量、测试环境、产品发布的设想时间等要求&#xff0c;就可以确定测试进度和所需的测试资源&#xff0c;或者基于现有的测试资源…

C语言和Java 在用数组作为参数时有点不一样

C语言和Java 在用数组作为参数时有点不一样。 C中 void jh(int n[2]) {/注意这里参数是写了大小 int temp; temp n[0]; n[0] n[1]; n[1] temp; } int main() { int i; int num[2] {7, 8}; jh(num); } Java中 由于C和Java中定义数组形式稍微有点不一样&#xff0c;所以这里…

[CLR via C#]16. 数组

数组是允许将多个数据项当作一个集合来处理的机制。CLR支持一维数组、多维数组和交错数据(即由数组构成的数组)。所有数组类型都隐式地从System.Array抽象类派生&#xff0c;后者又派生自System.Object。这意味着数组始终是引用类型&#xff0c;是在托管堆上分配的。在你应用程…

Java中String类 compareTo()方法比较字符串详解

中心&#xff1a;String 是字符串,它的比较用compareTo方法,它从第一位开始比较, 如果遇到不同的字符,则马上返回这两个字符的ascii值差值.返回值是int类型1.当两个比较的字符串是英文且长度不等时&#xff0c;1&#xff09;长度短的与长度长的字符一样&#xff0c;则返回的结果…

UIPopoverController简介

1, performSegueWithIdentifier:sender&#xff1a;跳转或弹出控制器 Identifier为popoverSegue时候&#xff0c;Sender仅限于UIBarbuttonItem与View&#xff1b;//。。。。。。。。。 转载于:https://www.cnblogs.com/senlinwuran/p/UIPopoverController.html

异常是catch还是throws的简单原则

1 .如果你完全能处理这个异常&#xff0c;那么就catch掉 public void test() {try {} catch (Exception e) {}}2. 如果你完全不能处理这个异常&#xff0c;那么就throws掉 public void test() throws Exception {}3. 如果你想对异常做一点点处理&#xff0c;但又不能完全处理&a…

在Windows 7 x64 上编译libsvn

这几天由于工作需要&#xff0c;需要Windows上Python 2.7 x64对应的svn模块。Win32版本可以从这个页面直接下载 http://sourceforge.net/projects/win32svnx64的无奈只有自己编译了。在这个过程中还是费了一些力气&#xff0c;在Linux上可以直接make&#xff0c;在Windows使用V…

程序员简历怎么写

说到程序员简历&#xff0c;这两个月&#xff0c;我看过不下10,000份简历。。。 答主不是HR&#xff0c;也不是技术负责人&#xff0c;但是在网站的运营工作中&#xff0c;每天最开心的事情就是研究候选人的简历了~~ 这些人中&#xff0c;有BAT的资深大牛程序员&#xff0c;也有…

android之修改CheckBox左侧图标样式

很多时候系统自带的CheckBox样式并不能满足我们的需求&#xff0c;本文讲解如何替换CheckBox选中&#xff0c;未选中状态下的左侧图片背景的替换。 1.在res目录下创建drawable文件夹&#xff0c;在drawable创建my_checkbox.xml文件 my_checkbox.xml文件内容如下&#xff1a; &l…

步步高DVD机DV603的U盘模式支持视频格式

亲测支持视频格式&#xff1a;支持avi,mpg,vob文件 转载于:https://www.cnblogs.com/phyking/p/4456602.html

SSM框架学习整理

一、Spring原理&#xff1a; 1:核心技术 Spring的两大技术要点便是&#xff0c;一个AOP(面向切面编程)&#xff0c;一个IOC&#xff08;控制反转&#xff09;&#xff0c;而AOP是什么呢&#xff0c;就好比从c语言面向过程编程—>java面向对象编程—>Spring面向切面编程…

安卓手机关闭底部键盘灯的方法(htc G11亲测有效)

还在因为看电子书和看电影时键盘灯刺眼而苦恼吗&#xff1f;下面提供一个方法关闭键盘灯&#xff0c;让你轻松DIY&#xff01;1、手机必须先Root。使用RE管理器&#xff0c;按照这个路径&#xff0c;找到文件&#xff1a;brightnesssys/devices/platform/leds-pm8058/leds/butt…

SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

使用SSM&#xff08;Spring、SpringMVC和Mybatis&#xff09;已经有三个多月了&#xff0c;项目在技术上已经没有什么难点了&#xff0c;基于现有的技术就可以实现想要的功能&#xff0c;当然肯定有很多可以改进的地方。之前没有记录SSM整合的过程&#xff0c;这次刚刚好基于自…

java基础知识 多线程

package org.base.practise9; import org.junit.Test; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; /** * Created with IntelliJ IDEA. * User: cutter.li * Date: 14-3-11 * Time: 上午9:40 * 多线程基础知识练习 */ public class Pract…

最新版的SSM框架spring5.0搭建教程(附源码)

<p>用SSM框架已经有一段时间了&#xff0c;但都没有完整地搭建过一次工程。前段时间比较有时间就自己试着搭建了一下&#xff0c;差不多都是用的最新的spring版本了&#xff0c;然后就在这个基础上做了很多的实验测试。最近想着还是记录一下整个搭建的过程&#xff0c;以…

node.js 针对不同的请求路径(url) 做出不同的响应

边看这个边写的: http://wenku.baidu.com/link?urlC4yLe-TVH6060u_x4t34H3Ze8tjoL7HjJaKgH-TvHnEYl-T_gAMYwhmrCeM0Ji59WBPSkoEXPTWk8dPIZVpbFg_by_gN6DJNGYfjlFuYxE_ 上篇文章讲到了浏览器中访问 http://127.0.0.1:8888/ 输出 "hello world", 但是实际当中, 用户访…

MyBatis 为什么需要通用 Mapper ?

版权声明&#xff1a;版权归博主所有&#xff0c;转载请带上本文链接&#xff01;联系方式&#xff1a;abel533gmail.com https://blog.csdn.net/isea533/article/details/83045335 </div>在早期项目文档中有过类似主题的内容…

Oracle教程-安装、结构(一)

本文安装的是Oracle中的11G版本一、 将文件win32_11gR2_database_1of2.zip和win32_11gR2_database_2of2.zip解压。注意&#xff1a;这两个文件解压到同一个目录下&#xff0c;即&#xff1a;将Components目录合并到一起二、 双击“setup.exe”&#xff0c;弹出以下安装向导。去…

SpringBoot视频教程

SpringBoot视频教程 百度云 置顶 2018年08月02日 11:56:26 SoXiaTea 阅读数 8811 SpringBoot视频教程 百度云 史上最全最精辟的SpringBoot视频教程 B站视频地址 https://www.bilibili.com/video/av33985898 百度云保存地址 全网最实用1.5版本SpringBoot教程 链接&#xf…