Intent
来源:互联网 发布:淘宝联盟导购id 编辑:程序博客网 时间:2024/06/06 03:40
Intent和IntentFilter
Android官方文档地址 :https://developer.android.com/guide/components/intents-filters.html#Receiving
Intent是一个消息传递对象,可以使用它对应用组件请求操作,Intent可以使用多种方式促进组件之间的通信,但其基本用例主要包括以下三个:
启动Activity
startActivity(intent);startActivityForResult(intent); //当activity需要返回结果时调用
启动Services
startServices(intent); bindServices(intent);
发送广播(BroadCastReciver)
Intent类型
Intent有两种类型,显示和隐式.
显示Intent : 显示Intent按名称(类名)启动指定的组件:例如:启动Activity来响应用户操作启动Services来处理下载操作.
隐式Intent : 不会指定类名,而是声明要进行的操作,调用其他应用中的组件来处理.
创建隐式 Intent 时,Android 系统通过将 Intent 的内容与在设备上其他应用的清单文件中声明的 Intent 过滤器进行比较,从而找到要启动的相应组件。 如果 Intent 与 Intent 过滤器匹配,则系统将启动该组件,并向其传递 Intent 对象。 如果多个 Intent 过滤器兼容,则系统会显示一个对话框,支持用户选取要使用的应用.
Intent 过滤器是应用清单文件中的一个表达式,它指定该组件要接收的 Intent 类型。 例如,通过为 Activity 声明 Intent 过滤器,您可以使其他应用能够直接使用某一特定类型的 Intent 启动 Activity。同样,如果您没有为 Activity 声明任何 Intent 过滤器,则 Activity 只能通过显式 Intent 启动.
注意 : 为了确保应用的安全性,启动 Service 时,请始终使用显式 Intent,且不要为服务声明 Intent 过滤器。使用隐式 Intent 启动服务存在安全隐患,因为您无法确定哪些服务将响应 Intent,且用户无法看到哪些服务已启动。从 Android 5.0(API 级别 21)开始,如果使用隐式 Intent 调用 bindService(),系统会引发异常
Intent-Filter
要公布应用可以接收哪些隐式 Intent,请在清单文件中使用 元素为每个应用组件声明一个或多个 Intent 过滤器。每个 Intent 过滤器均根据 Intent 的操作、数据和类别指定自身接受的 Intent 类型。 仅当隐式 Intent 可以通过 Intent 过滤器之一传递时,系统才会将该 Intent 传递给应用组件。
应用组件应当为自身可执行的每个独特作业声明单独的过滤器。例如,图像库应用中的一个 Activity 可能会有两个过滤器,分别用于查看图像和编辑图像。 当 Activity 启动时,它将检查 Intent 并根据 Intent 中的信息决定具体的行为(例如,是否显示编辑器控件)。
每个 Intent 过滤器均由应用清单文件中的 元素定义,并嵌套在相应的应用组件(例如, 元素)中。 在 内部,您可以使用以下三个元素中的一个或多个指定要接受的 Intent 类型:
action :
在 name 属性中,声明接受的 Intent 操作。该值必须是操作的文本字符串值,而不是类常量。data :
使用一个或多个指定数据 URI 各个方面(scheme、host、port、path 等)和 MIME 类型的属性,声明接受的数据类型。category :
在 name 属性中,声明接受的 Intent 类别。该值必须是操作的文本字符串值,而不是类常量。注:为了接收隐式 Intent,必须将 CATEGORY_DEFAULT 类别包括在 Intent 过滤器中。 方法 startActivity() 和 startActivityForResult() 将按照已申明 CATEGORY_DEFAULT 类别的方式处理所有 Intent。 如果未在 Intent 过滤器中声明此类别,则隐式 Intent 不会解析为您的 Activity。
- intent
- Intent
- Intent
- Intent
- intent
- Intent
- intent
- Intent
- Intent
- Intent
- Intent
- Intent
- Intent
- intent
- Intent
- intent
- Intent
- intent
- 在线小说网站的设计与实现(附源码)
- CSS3 3D转换
- ThinkPHP微信自定义分享Demo
- Linux常用命令操作
- stream之并行流
- Intent
- Android Framework学习(七)之Thread类以及常用同步类
- Mybatis---配置文件添加提示
- spring In Action 笔记
- 二分贪心专题总结
- 线程安全与锁优化
- 函数式编程 流Stream的使用
- 数组
- 最长连续序列