intentfilterintentfilter添加intent需要加什么权限

intentfilter  时间:2021-07-05  阅读:()

为什么IntentFilter.addAction的参数是字符串也可以?

IntentFilter.addAction("action"); 这就是给意图过虑器,增加一个Action 这个Action就是IntentFilter声明的,都是字符串 关于广播机制,建议你先看看视频教程

intent-filter是怎么用的

Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent (意图) ,Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传Intent来执行动作和产生事件。

使用Intent可以激活Android应用三种类型的核心组件:活动、服务和广播接收者。

Intent可以划分成显式意图和隐式意图: 显式意图:调用Intent.setComponent() Intent.setClassName()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了要激活的组件是哪个组件。

隐式意图:没有明确指定组件名的Intent为隐式意图。

Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。

对于隐式意图,Android是怎样寻找到这个最合适的组件呢?我们在定义Activity时,指定了一个intent-filter,Intent Filter(意图过滤器)其实就是用来匹配隐式Intent的,当一个意图对象被一个意图过滤器进行匹配测试时,只有三个方面会被参考到:动作、数据(URI以及数据类型)和类别。

动作测试(Action test) 一个意图对象只能指定一个动作名称,而一个过滤器可能列举多个动作名称。

如果意图对象或过滤器没有指定任何动作,结果将如下: 如果过滤器没有指定任何动作,那么将阻塞所有的意图,因此所有的意图都会测试失败。

没有意图能够通过这个过滤器。

另一方面,只要过滤器包含至少一个动作,一个没有指定动作的意图对象自动通过这个测试 类别测试(Category test) 对于一个能够通过类别匹配测试的意图,意图对象中的类别必须匹配过滤器中的类别。

这个过滤器可以列举另外的类别,但它不能遗漏在这个意图中的任何类别。

原则上一个没有类别的意图对象应该总能够通过匹配测试,而不管过滤器里有什么。

大部分情况下这个是对的。

但有一个例外,Android把所有传给startActivity()的隐式意图当作他们包含至少一个类别:"android.intent.category.DEFAULT" (CATEGORY_DEFAULT常量)。

因此,想要接收隐式意图的活动必须在它们的意图过滤器中包含"android.intent.category.DEFAULT"。

(带"android.intent.action.MAIN"和"android.intent.category.LAUNCHER"设置的过滤器是例外) 数据测试(Data test) 当一个意图对象中的URI被用来和一个过滤器中的URI比较时,比较的是URI的各个组成部分。

例如,如果过滤器仅指定了一个scheme,所有该scheme的URIs都能够和这个过滤器相匹配;如果过滤器指定了一个scheme、主机名但没有路经部分,所有具有相同scheme和主机名的URIs都可以和这个过滤器相匹配,而不管它们的路经;如果过滤器指定了一个scheme、主机名和路经,只有具有相同scheme、主机名和路经的URIs才可以和这个过滤器相匹配。

当然,一个过滤器中的路径规格可以包含通配符,这样只需要部分匹配即可。

数据测试同时比较意图对象和过滤器中指定的URI和数据类型。

规则如下: a. 一个既不包含URI也不包含数据类型的意图对象仅在过滤器也同样没有指定任何URIs和数据类型的情况下才能通过测试。

b. 一个包含URI但没有数据类型的意图对象仅在它的URI和一个同样没有指定数据类型的过滤器里的URI匹配时才能通过测试。

这通常发生在类似于mailto:和tel:这样的URIs上:它们并不引用实际数据。

c. 一个包含数据类型但不包含URI的意图对象仅在这个过滤器列举了同样的数据类型而且也没有指定一个URI的情况下才能通过测试。

d. 一个同时包含URI和数据类型(或者可从URI推断出数据类型)的意图对象可以通过测试,如果它的类型和过滤器中列举的类型相匹配的话。

如果它的URI和这个过滤器中的一个URI相匹配或者它有一个内容content:或者文件file: URI而且这个过滤器没有指定一个URI,那么它也能通过测试。

换句话说,一个组件被假定为支持content:和file: 数据如果它的过滤器仅列举了一个数据类型。

intentfilter添加intent需要加什么权限

Android 应用程序中有三大核心组件: Activity, Service, Broadcast Receiver 都是通过被称之为意图的消息运行。

Intent messaging is a facility for late run-time binding ponents in the same or different applications. 意图本身一个 Intent 对象,它保存了对要执行操作的抽象描述—对于broadcasts来说,则表示对已经发生并且正要报告的操作。

对这下三种组件,发送intents分别有不同的机制。

传递一个Intent对象到 Context.startActivity(intent) 或者 Activity.startActivity ForResult(int) 去运行一个Activity(可以在通过此方式启动后的Activity中调用 Activity.setResult() 设置结果参数,该参数将会在启动当前activity的activity中被接收---可以通过onActivityResult(int requestCode, int resultCode, Intent data) 接收) 传递一个Intent对象到 Context.startService(intent) 去启动一个service 或者 传递一个新的指令到正在运行的service中。

另外,还可以通过 Context.bindService(intent) 去绑定一个Service。

(在调用组件和目标Service 建立一个连接) 传递一个Intent对象到 任何一个broadcast methods (如: Context.sendBroadcast() , Context.sendOrderedBroadcast(), Context.sendStickyBroadcast() ) 该intent将被传递给所有已经被注册的broadcast receiver中。

在以上的三种情况下,当Intent被传递出后,Android系统会找到适合的activity,service,或者是多个broadcast receiver去响应这个intent。

,这三种情况不会存在重叠的部分,它们相互独立,互不干扰。

(调用Context.startActivity()后 intent只会被相应的activity接收到)

欧路云(22元) 新增美国Cera线路VPS主机且可全场8折

欧路云(oulucloud) 商家在前面的文章中也有陆续介绍过几次,这不今天有看到商家新增加美国Cera线路的VPS主机,而且有提供全场八折优惠。按照最低套餐最低配置的折扣,月付VPS主机低至22元,还是比较便宜的。不过我们需要注意的是,欧路云是一家2021年新成立的国人主机商,据说是由深圳和香港的几名大佬创建。如果我们有介意新商家的话,选择的时候谨慎且月付即可,注意数据备份。商家目前主营高防VP...

Friendhosting(月1.35欧元),不限流量,9机房可选

今天9月10日是教师节,我们今天有没有让孩子带礼物和花送给老师?我们这边不允许带礼物进学校,直接有校长在门口遇到有带礼物的直接拦截下来。今天有看到Friendhosting最近推出了教师节优惠,VPS全场45折,全球多机房可选,有需要的可以看看。Friendhosting是一家成立于2009年的保加利亚主机商,主要提供销售VPS和独立服务器出租业务,数据中心分布在:荷兰、保加利亚、立陶宛、捷克、乌...

新网,域名7月盛夏1核心2G内存.COM域名仅19.9元/首年,主机9.9元/月,企业邮箱0元体验

新网好不好?新网域名便宜吗?新网怎么样?新网是国内老牌知名域名注册商,企业正规化运营,资质齐全,与阿里云万网和腾讯云DNSPOD同为国内服务商巨头。近日新网发布了最新的七月放价季优惠活动,主要针对域名、云主机、企业邮箱、SSL证书等多款云产品推送了超值的优惠,其中.com顶级域名仅19.9元/首年,.cn域名仅16元/首年,云主机1核心2G内存3Mbps带宽仅9.9元/月,企业邮箱更是免费送1年,...

intentfilter为你推荐
ipad怎么分屏ipad分屏怎么用,ipad分屏使用方法strcatc语言,怎么使用 strcat字符串连接函数,程序如图。联想网盘联想网盘收费吗,怎么样rbf神经网络MATLAB工具箱里的RBF神经网络newrb是什么算法oncontextmenuAndroid:onMenuItemSelected()方法与onOptionsItemSelected()方法有什么区别?webcrack我用WebCrack4 在破解路由器密码的时候为什么在破解密码的中途自动关闭掉tvosios,tvos,watchos和os x的区别弹幕播放器看过的剧有一个弹幕出来的是什么播放器layoutsubviews如何让NSSplitView的子View的大小固定图片存储手机照片的保存方法?
域名中介 smartvps 漂亮qq空间 重庆服务器托管 zpanel 优惠码 512av 100x100头像 太原网通测速平台 便宜空间 沈阳主机托管 全能空间 主机返佣 广东服务器托管 石家庄服务器 tracker服务器 腾讯服务器 架设代理服务器 标准机柜 hosts文件修改 更多