您现在的位置是:首页 > 正文

Android学习笔记(47):使用Intent和IntentFilter进行通信

2024-02-01 05:18:01阅读 2

Android中Activity、Service、BroadcastReceiver都是依靠Intent启动的,Intent封装了程序想要启动程序的意图,还可以用于与被启动组件交换信息。

 

使用Intent启动不同组件的方法:

组件类型

启动方法

Activity

startActvity( )

startActivity( )

Service

startService( )

bindService( )

BroadcastReceiver

sendBroadcasts( )

sendOrderedBroadcasts( )

sendStickyBroadcasts( )

 

Intent的属性:

Intent对象包含如下7种的属性:

动作(Action)、数据(Data)、分类(Category)、类型(Type)、组件(Component)、扩展信(Extra)、控制旗标(Flag)。

其中最常用的是Action属性和Data属性。

 

Component属性:

Component接受一个ComponentName对象,ComponentName对象有如下几个构造器:

ComponentName(String pkg,String cls)

ComponentName(Context pkg,String cls)

ComponentName(Context pkg,Class<?>cls)

其中,pkg包名,cls类名。

 

Intent还包含如下三个方法,用于设置将要启动的组件:

setClass(Context packageContext,Class<?>cls)

setClassName(Context packageContext,String className)

setClassName(String packageName,String className)

 

显式Intent与隐式Intent:

指定Component属性已经明确它要启动哪个组件,为显式Intent。没有明确Component属性的,为隐式Intent,应用将会根据Intent指定的规则去启动符合条件的组件。

 

下面两种指定启动组件的代码是一样的功能:

1.

Intent intent = new Intent(); 
ComponentName cn = newComponentName(HelloActivity.this,"com.byread.activity.OtherActivity"); 
intent.setComponent(cn); 
startActivity(intent);

2.

Intent intent = new Intent(); 
intent.setClass(HelloActivity.this,OtherActivity.class); 
startActivity(intent);

Action与Category属性与intent-filter配置

Action和Category都为普通字符串。Action代表该Intent所要完成的一个抽象动作,Category用于为Action增加额外的附加类别信息,两者一般结合使用。

Action要完成一个抽象动作,这个动作具体由哪个组件完成,取决于Activity的<intent-filter…/>配置。

<intent-filter…/>是<activity…/>的子元素,用于配置该Activity所能响应的Intent。

<intent-filter…/>可以包含:

0到N个<action…/>子元素

0到N个<category…/>子元素

0到1个<data…/>子元素

 

Action属性常量:

ACTION_MAIN:Android Application的入口,每个Android应用必须且只能包含一个此类型的Action声明。 

ACTION_VIEW:系统根据不同的Data类型,通过已注册的对应Application显示数据。

ACTION_EDIT:系统根据不同的Data类型,通过已注册的对应Application编辑示数据。 

ACTION_DIAL:打开系统默认的拨号程序,如果Data中设置了电话号码,则自动在拨号程序中输入此号码。 

ACTION_CALL:直接呼叫Data中所带的号码。 

ACTION_ANSWER:接听来电。 

ACTION_SEND:由用户指定发送方式进行数据发送操作。

ACTION_SENDTO:系统根据不同的Data类型,通过已注册的对应Application进行数据发送操作。 

ACTION_BOOT_COMPLETED:Android系统在启动完毕后发出带有此Action的广播(Broadcast)。 

ACTION_TIME_CHANGED:Android系统的时间发生改变后发出带有此Action的广播(Broadcast)。 

ACTION_PACKAGE_ADDED:Android系统安装了新的Application之后发出带有此Action的广播(Broadcast)。 

ACTION_PACKAGE_CHANGED:Android系统中已存在的Application发生改变之后(如应用更新操作)发出带有此Action的广播(Broadcast)。 

ACTION_PACKAGE_REMOVED:卸载了Android系统已存在的Application之后发出带有此Action的广播(Broadcast)。  

Category属性常量:

CATEGORY_DEFAULT:Android系统中默认的执行方式,按照普通Activity的执行方式执行。 

CATEGORY_HOME:设置该组件为Home Activity。

CATEGORY_PREFERENCE:设置该组件为Preference。 

CATEGORY_LAUNCHER:设置该组件为在当前应用程序启动器中优先级最高的Activity,通常为入口ACTION_MAIN配合使用。 

CATEGORY_BROWSABLE:设置该组件可以使用浏览器启动。 

CATEGORY_GADGET:设置该组件可以内嵌到另外的Activity中。

 

Data与Type属性与intent-filter配置

Data属性通常用于向Action属性提供操作的数据,Data属性接受一个Uri对象。

Type属性用于指定该Data属性所指定Uri对应的MIME类型(多用途互联网邮件扩展类型)。MIME类型可以是任何自定义的MIME类型,只要符合abc/xyz格式的字符串即可。

Data与Type属性分别先后设置后,后面设置的属性会覆盖前面的属性,希望同时设置,需要调用Intent的setDataAndType()方法。

 

使用Action和Data属性启动系统Activity

一旦为Intent指定了Action、Data属性,Android就可以根据指定的数据类型来启动特定的应用程序。

 

Extra属性:

是一个Bundle对象,用于在多个Bundle之间进行数据交换。

 

Flag属性:

为Intent添加一些额外的控制旗标,Intent可调用addFlag()方法来添加控制旗标。

 

网站文章

  • 关于spring的问题处理(idea环境下)

    关于spring的问题处理(idea环境下)

    1、yml文件在导入jar包之后不变绿叶子配置文件的最终处理措施

    2024-02-01 05:17:52
  • caffe loss 损失权重问题

    loss有一个细节问题就是Loss weights(损失权重),用来表征不同Layer产生的loss的重要性,Layer名称中以Loss结尾表示这是一个会产生loss的Layer,其他的Layer只是单纯的用于中间计算。任何一个Layer都可以被用于产生loss。反向迭代时,一个Layer可以赋予一个非零的loss weight,用于调整中间Layer产生的一些数据、参数。对于不止一个输出(t

    2024-02-01 05:17:23
  • 【Linux】LINUX学习之路(学LINUX必看)

    转载自:http://blog.csdn.net/simanstar/article/details/8644437 LINUX学习之路(学LINUX必看) 红色字体为本人注释 很多同学接触Linux不多,对Linux平台的开发更是一无所知。而现在的趋势越来越表明,作为一 个优秀的软件开发人员,或计算机IT行业从业人员,掌握Linux是一种很重要的谋生资源与手段。下来我

    2024-02-01 05:17:17
  • React-native 学习笔记(三)

    关于react native 一些常见错误的积累最近在学习rn的时候碰到一些奇葩的问题,在这里总结一下,日后可以有据可查在完成所有的配置之后也就是执行了react native //项目启动react-native init AwesomeProjectcd AwesomeProjectreact-native run-ios报错: 找不到index.os文件 解决 在AwesomePro

    2024-02-01 05:17:11
  • 表单的基本结构和语法

    基本语法: ion="表单提交地址" method="提交方法"> ...文本框、按钮等表单元素 action 属性:规定当提交表单信息时,向何处发送表单数据,即处理表单数据的目标地址。如不填,默认为当前页面。method 属性:规定提交方式,聚会为"get"或"post"。"get"方式一般适用于安全性不高的场合,而"post"一般适用于安全性较高的场合。普通按钮:图片按钮: 注意,这种方式

    2024-02-01 05:16:41
  • win2008搭建文件存储服务器,Win2008文件服务之SAN存储管理器入门

    【IT168 专稿】SAN 存储管理器是新的 Microsoft 管理控制台 (MMC) 管理单元,我们可以通过它帮助创建和管理存储区域网络 (SAN) 中支持虚拟磁盘服务 (VDS) 的光纤通道磁盘...

    2024-02-01 05:16:33
  • IDEA普通JAVA项目打包成exe可执行程序【带有第三方jar依赖】

    IDEA普通JAVA项目打包成exe可执行程序【带有第三方jar依赖】

    一、项目简介该项目使用IntelliJ IDEA创建的普通JAVA项目,该项目有依赖第三库和jar包。这个项目要打成生成exe可执行程序,特此记录一下打包步骤。打包步骤主要分两步走:1.将java项目...

    2024-02-01 05:16:27
  • mysql安装

    mysql安装

    MySQL安装及设置

    2024-02-01 05:16:21
  • 浅谈前端性能优化(七)——图像优化

    1、常用的图像类型 1) gif: 适用于动画效果。 2) jpg: 使用有损压缩,将图片的每个像素分解成8*8的栅格,然后对每个栅格的数据进行压缩处理,通过特殊的算法用附近的颜色填充栅格。用户可以设置质量级别,从0到100,数字越小,图片质量越差。 3) png:使用无损压缩,将图片出现的颜色进行索引,保留在调色板上,在显示图像时会调用调色板的颜色去填充相应位置。png又分为png8、pn

    2024-02-01 05:15:51
  • 轻松通关Flink第06讲:Flink 集群安装部署和 HA 配置

    轻松通关Flink第06讲:Flink 集群安装部署和 HA 配置

    本课时我们讲解了 Flink 的三种部署模式和高可用配置,并且对这三种部署模式的适用场景进行了讲解。在生产上,我们最常用的方式当然是 Flink on Yarn,借助 Yarn 在资源管理上的绝对优势,确保集群和任务的稳定。

    2024-02-01 05:15:45