位置: 编程技术 - 正文

Intent and Intent Filters

编辑:rootadmin

推荐整理分享Intent and Intent Filters,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

转载请注明出处: * 启动一个activity * 通过startActivity(intent),intent可以携带数据。 * 如果希望在activity结束时接收一个结果,startActivityForResult,你可以在activity的onActivityResult(int requestCode,int resultCode,Intent data). * 启动service * 传递Intent,startService。 * 传递Intent,bindService。 * 发出广播 一个广播消息任何应用程序都可以接收。系统为一些系统事件提供广播,例如开机,设备开始充电。 * sendBroadcast * sendOrderedBroadcast * sendStickyBroadcast

意图类型显示意图 显示意图指定了要启动的组件的名称(类全称)。你可以在自己使用它,因为你知道它的名称。隐示意图 它不声明具体的组件名称,但是你需要声明一个动作(action),允许其它应用的组件处理它。 当你启动一个显示意图,系统立即根据intent里面指定的组件启动它。 当你使用隐示意图,系统会根据其它应用manifest中的意图过滤器进行匹配。如果匹配到一个意图过滤器,系统将会把intent传递给它并启动。如果有多个匹配,系统会显示一个对话框让用户选择。 一个意图过滤器是你在manifest中为组件指定的希望接受的intent类型。如果你不为一个activity指定任何意图,那他只能被显示意图启动。 注意:确保你的应用是安全的,使用显示意图启动service,并且不为service声明任何意图过滤器。使用隐式意图有安全风险,因为你不确定到底是什么service相应了意图,用户也看不见什么service启动了。 Android5.0(Api ),如果你使用隐式意图bindService,会抛出异常。创建一个意图组件名称 如果有名称,那就是显示意图;如果没有指定名称,会根据intent的内容决定(action,data,category,etc.) setComponent()、setClass()、setClassName()、构造器。action action很大程度上决定了intent其它部分(例如data、extras)的结构你可以自己指定actions,但是你通常应该使用Intent类内部定义的或者其它类定义的。例如: ACTION_VIEW:当你有一些东西可以通过activity要展示给用户。(例如:图片、地图的地址)ACTION_SEND:也被成为分享意图,当你有一些东西可以通过其它app分享。Intent还有很多actions,其他类Settings有actions可以打开系统设置的某一个页面。setAction()或者构造器指定action自定义action,要带上包名:static final String ACTION_TIMETRAVEL = “com.example.action.TIMETRAVEL”;data 一个Uri对象。数据类型通常由action决定。例如:ACTION_EDIT,那么data应该包含编辑数据的uri。当创建意图,指定data的MIME类型很重要。例如一个播放音频的不能播放视频即使uri格式相似。有时候,MIME类型可以从 URI 得到例如:content:URI ,暗示数据是contentprovider类型。只需要设置data uri,使用setData(),只需要设置MIME类型,使用setType()。注意:如果你需要设置data和type,使用setDataAndType()。如果分别调用setData和setType,它们会相互消除另一个的设置category 包含了应该处理这个Intent的组件的种类的字符串。一个Intent可以包含任意多的category。 CATEGORY_BROWSABLE:目标activity可以使用浏览器打开一个连接CATEGORY_LAUNCHER:一个任务的初始化activity,被展现在应用的launcher列表中。更多请查看Intent类使用addCategory() 以上三个属性使Intent的核心。通过它们,系统就可以确定应该启动哪个应用组件。下面的属性不会影响:extras 使用putExtra()添加键值对、还可以使用putExtras添加Bundle。Intent类有很多标准数据类型flags 可以指定系统如何加载一个activity。(例如activity应该属于哪一个task),加载后如何对待(例如是否属于最近的活动列表)查看setFlags().显示意图举例隐式意图举例

注意:如果系统中没有可以匹配隐式意图的组件,调用会失败并且应用会崩溃。可以使用resolveActivity()检测

注意:这次,没有使用URI,因为intent的数据类型已经指定extras携带内容。

迫使使用选择对话框

如果用户设置了默认程序,用户可能希望不同场景使用不同的app(Intent.createChooser):

接收隐式意图

一个应用组件应该为它能做的每一个任务分开定义intent filters。例如一个activity可以显示图片也可以编辑图片,那就定义两个filters。当activity启动后,可以根据intent里面的内容决定是否展示图片编辑器。使用intent-filter标签,你可以在它里面多次使用action、data、category。 * action:通过它的name属性定义动作的名称,应该使用动作的文字字符串而不是类的常量。 * data:指定接收数据的类型。可以使用多个URI属性(scheme、host、port、path、etc.),MIME类型。 * category:通过它的name属性定义动作的名称,应该使用动作的文字字符串而不是类的常量。 * 注意:如果要接收隐式意图,必须提供category的CATEGORY_DEFAULT值。

Filters举例:ACTION_MAIN:指定这是主入口CATEGORY_LAUNCHER:这个activity的图标必须展示在launcher中,如果activity没有,使用application的。这两个必须一起使用使app可以展现在launcher中。注意:The MIME type, application/vnd.google.panorama+jpg, is a special data type that specifies panoramic photos, which you can handle with the Google panorama APIs.使用PendingIntent

PendingIntent是Intent的一个包装。PendingIntent的主要目的是为了允许其它应用就像在你自己应用的进程中使用包含的intent。 主要的PendingIntent使用场景: * 声明一个意图,当用户在通知栏执行一个动作(系统的NotificationManager执行这个intent) * 声明一个意图,当用户在你的AppWidget执行动作(系统的HomeScreen执行这个intent) * 声明一个意图,在将来的一个指定的时间执行(系统的AlarmManger执行) * 创建PendingIntent: * PendingIntent.getActivity() 启动一个activity * PendingIntent.getService() 启动一个service * PendingIntent.getBroadcast() 启动一个广播 * 每一个方法有两个参数,当前app的context和要包含的intent。可以指定标志intent如何使用(例如intent可以被使用多次)

Resolve IntentIntent and Intent Filters

当系统接到一个启动activity隐式意图的时候,会在系统中通过比较一下三个属性查找匹配的: * intent action * intent data(both URI and data type) * intent category

ActionTest 条件 Intent Filter Result Action 1 >=1 Intent必须比配其中一个action Action 1 0 fail Action 0 >=1 passCategoryTest 条件 Intent Filter Result Category >=1 >=1 Intent中所有的category必须与filter中的匹配 Category 0 >=1 pass

注意:系统自动的为隐式Intent添加了CATEGORY_DEFAULT,所以activity如果想接收隐式Intent,必须包含CATEGORY_DEFAULT。

DataTest

URI匹配:(1表示有;0表示没有,.表示不确定)

条件 Intent Filter Result scheme/authority/path 1/./. 1/0/0 Intent只需要包含scheme scheme/authority/path 1/1/. 1/1/0 需要匹配scheme和authority scheme/authority/path 1/1/1 1/1/1 三者匹配才pass

Data匹配:

条件 Intent Filter Result URI/MIME type 0/0 0/0 pass URI/MIME type 1/0 1/0 只有URI匹配,才pass URI/MIME type 0/1 0/1 MIME type相同,才pass URI/MIME type 1/1 1/1 两者匹配/Intent有一个包含contnet:或者file:的URI而且filter没有URI

最后一个条件暗示组件的data如果只有MIME type,那么将默认支持content:和file:,所以组件可以只包含MIME type,例如:

包含URI和MIME type的例子,例如下面的支持组件从网络获得一个video:

意图匹配

意图匹配不只是用来启动一个组件,还可以用来查看设备上组件的一些设定。 例如:Launcher通过查找包含ACTION_MAIN 和CATEGORY_LAUNCHER的intent filter来确定app。 你自己的应用也可以这样做。 PackageManager有一些查询方法,queryIntentActivities(),queryIntentServices(),queryBroadcastReceivers(), 还有一些resolve…()方法决定最好的相应组件。

Android 常用适配器总结 一,适配器.顾名思义,就是把一些数据给弄得适当,适合以便于在View上显示。可以看作是界面数据绑定的一种理解。它所操纵的数据一般都是一些比较

eclipse创建android项目出现error libz.so.1: cannot open shared object file:No such file or directory /home/~/mywork/kitKat/prebuilts/gcc/linux-x/host/i-linux-glibc2.7-4.6/bin/../lib/gcc/i-linux/4.6.x-google/../../../../i-linux/bin/as:errorwhileloadingsharedlibraries:libz.so.1:cannotopensha

一起学android之从Camera捕获图像讲解() 我们知道所有带有摄像头的设备都会附带Camera应用程序,Camera应用程序包含一个意图过滤器,用于与Camera应用程序图像的获取。为了通过一个意图利用Ca

标签: Intent and Intent Filters

本文链接地址:https://www.jiuchutong.com/biancheng/378159.html 转载请保留说明!

上一篇:Android系统触屏事件传递派发浅析(二)(android触屏事件的处理)

下一篇:Android 常用适配器总结(android适配器是什么意思)

  • 提存计划和受益计划选那个
  • 收到预付款的发票怎么写摘要
  • 安装服务费发票需要备注地址吗
  • 开业前的其他费用
  • 个人独资企业经营所得税优惠政策
  • 员工报销公司是哪个部门
  • 工作未满12个月被辞退时前月平均工资怎么计算
  • 收到低值易耗品的专票但未付款
  • 企业销售赠券的增值税如何处理
  • 经营利润所得税费用的计算公式
  • 计提工资和应付职工薪酬怎么不一样
  • 支付土地流转费
  • 普通年金的定义
  • 企业收取多年租金怎么算
  • 假的手撕票已经入账了怎么办?
  • 零申报的资产负债表不能为0
  • 退以前年度所得税会计分录
  • 提供服务的发票可以抵扣税款吗?
  • 退车辆保险费如何计算
  • 在建工程如何评估价值
  • 空调计入什么会计科目二级
  • 个税返还会计政策
  • 收到退款的会计分录
  • 个人减免税政策6条
  • 滞纳金和罚金计入哪个会计科目
  • 源码阅读技巧
  • 投资性房地产出售时其他综合收益
  • 在一个js文件中怎么写
  • 让渡资产使用权包含哪些内容
  • 费用报销单怎样粘贴
  • nginx for linux
  • 你知道怎么训练
  • es6 promise finally
  • 用ipconfig/all命令不能显示
  • 会计核算方法有几种
  • 主营业务收入的t型账户怎么写
  • 买一赠一的销售方式
  • 公司对其他公司的投资怎么做账
  • 网上免费学电脑
  • php7安装mysqli扩展
  • Apache RocketMQ 5.0 笔记
  • 电费账务qc
  • 公司注册后一直没有申报
  • 固定资产清理包括什么会计科目
  • 小企业在购买商品过程中发生的费用
  • 公司基本户里的钱有利息吗
  • 普通发票的税费计入应交税费吗
  • 水电费没有发票吗
  • 免税商品外汇业务
  • 旅游发票可以做差旅费吗
  • 预付款项核销
  • 在建工程转固定资产凭证附件
  • 厂商租赁公司
  • 企业用支付宝
  • 购买银行理财产品的几个必须知道
  • 收回理财款会计分录
  • 开发阶段的支出计入什么科目
  • 营业外支出明细账应该采用的格式是
  • 投资收益下期间怎么结转
  • win7提示盗版怎样激活
  • windows怎么查看
  • ubuntu20.04常用软件
  • Ubuntu上安装jdk
  • u盘装系统步骤delt进入界面怎么选择
  • windows任务管理器调用的方法
  • 文件夹隐藏属性怎么弄
  • centos7挂载
  • win10预览版和正式版
  • linux的命令行界面
  • 深入理解新发展理念,推进供给侧结构性改革 心得体会
  • 利用nodejs实现百度文本审核
  • js的异步解决方案有哪些
  • jquery中给指定元素添加样式
  • python 数据结构 算法
  • jquery对动态生成的进行操作
  • unity iphone
  • 营改增之前建筑业税率是多少
  • 增值税纳税申报表怎么填
  • 贵州省地方税务局税源管理平台(二次)招标合同公告
  • 税务局监控个人账户流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设