当前位置: 首页 > news >正文

运城可以做网站的公司常州网站推广

运城可以做网站的公司,常州网站推广,抖音里做我女朋友网站,企业网站建设免备案文章目录 一、什么是IntentFilter ?二、IntentFilter 如何过滤隐式意图?2.1 动作测试2.2 类别测试2.3 数据测试 一、什么是IntentFilter ? 如果一个 Intent 请求在一片数据上执行一个动作, Android 如何知道哪个应用程序&#xf…

文章目录

    • 一、什么是IntentFilter ?
    • 二、IntentFilter 如何过滤隐式意图?
      • 2.1 动作测试
      • 2.2 类别测试
      • 2.3 数据测试

一、什么是IntentFilter ?

如果一个 Intent 请求在一片数据上执行一个动作, Android 如何知道哪个应用程序(和组件)能用来响应这个请求呢?

IntentFilter就是用来注册 ActivityServiceBroadcast Receiver 具有能在某种数据上执行一个动作的能力。

使用 IntentFilter ,应用程序组件告诉 Android ,它们能为其它程序的组件的动作请求提供服务,包括同一个程序的组件、本地的或第三方的应用程序。

IntentFilter翻译成中文就是“意图过滤器”,主要用来过滤隐式意图。当用户进行一项操作的时候,Android系统会根据配置的 “意图过滤器” 来寻找可以响应该操作的组件,服务。

例如:当用户点击PDF文件的时候,Android系统就会通过设定好的意图过滤器,进行匹配测试。找到能够打开PDF文件的APP程序。

代码:

<activity android:name="com.example.testmain.ShowActivity" ><intent-filter><action android:name="test.update.mydata" /><category android:name="my.test.show" /><data android:pathPattern=".*\\.jpg" android:scheme="http" /></intent-filter>
</activity>

二、IntentFilter 如何过滤隐式意图?

Android系统会根据配置的Intent Filter(意图过滤器),来进行匹配测试。匹配的时候,只会考虑三个方面:动作数据(URI以及数据类型)和类别。也就是说Android系统会进行“动作测试”,“数据测试”,“类别测试”,来寻找可以响应隐式意图的组件或服务。

另外,当对其他App程序开放组件和服务的时候也需要配置Intent Filter(意图过滤器),一个Activity可以配置多个<intent-filter>

2.1 动作测试

对应<intent-filter>中的<action/>标签;

  1. 如果<intent-filter>标签中有多个<action/>,那么Intent请求的Action,只要匹配其中的一条<action/>就可以通过了这条<intent-filter>的动作测试。

  2. 如果<intent-filter>中没有包含任何<action/>,那么无论什么Intent请求都无法和这条<intent-filter>匹配。

  3. 如果Intent请求中没有设定Action(动作),那么这个Intent请求就将顺利地通过<intent-filter>的动作测试(前提是<intent-filter>中必须包含有<action/>,否则与第二条冲突)。

2.2 类别测试

对应<intent-filter>中的<category />标签;

Intent中的类别必须全部匹配<intent-filter>中的<category />,但是<intent-filter>中多余的<category />将不会导致匹配失败。

例如:Intent中有3个类别,而意图过滤器中定义了5个,如果Intent中的3个类别都与过滤器中的匹配,那么过滤器中的另外2个,将不会导致类别测试失败。

在这里插入图片描述

注意:有一个例外,Android把所有传给startActivity()的隐式意图当作他们包含至少一个类别:“android.intent.category.DEFAULT” (CATEGORY_DEFAULT常量)。 因此,想要接收隐式意图的活动必须在它们的意图过滤器中包含"android.intent.category.DEFAULT"。(带"android.intent.action.MAIN"和"android.intent.category.LAUNCHER"设置的过滤器是例外)

2.3 数据测试

对应<intent-filter>中的<data>标签;

<data>元素指定了可以接受的Intent传过来的数据URI和数据类型,当一个意图对象中的URI被用来和一个过滤器中的URI比较时,比较的是URI的各个组成部分。

例如:

如果过滤器仅指定了一个scheme,所有该schemeURIs都能够和这个过滤器相匹配;

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

如果过滤器指定了一个scheme、主机名和路经,只有具有相同scheme、主机名和路经的URIs才可以和这个过滤器相匹配。当然,一个过滤器中的路径规格可以包含通配符,这样只需要部分匹配即可。
比较规则如下:

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

  2. 一个包含URI但没有数据类型的意图对象,仅在它的URI和一个同样没有指定数据类型的,过滤器里的URI匹配时才能通过测试。这通常发生在类似于mailto:和tel:这样的URIs上:它们并不引用实际数据。

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

  4. 一个同时包含URI和数据类型(或者可从URI推断出数据类型)的意图对象可以通过测试,如果它的类型和过滤器中列举的类型相匹配的话。如果它的URI和这个过滤器中的一个URI相匹配或者它有一个内容content:或者文件file: URI,而且这个过滤器没有指定一个URI,那么它也能通过测试。换句话说,一个组件被假定为支持”content: 数据“ 和 “file: 数据”,如果它的过滤器仅列举了一个数据类型。

例如AndroidManifest.xmlAndroidManifest.xml是安卓开发中主配置文件,程序执行首先浏览这个文件的内容)中有:

对于<intent-filter>中的action项可以有多个只要匹配其中一个就可以了

intent.setAction("com.nanlove.wangshiming");//中的action也可以为wangshimingintent.addCategory("wangshiming.intent.category")// 代码中的addCategory并不用写因为android他有默认的category 只要配置清单中存在<category android:name="android.intent.category.DEFAULT" />就可以了.

没有 “数据参数” 的情况下只要意图对象中的设置动作和类别都出现在intent-filter就能跟filter匹配,但是有数据<data android:scheme="love" android:host="hao123.com" android:port="888" android:path="/MM" />数据项一定要完全匹配。

当数据和数据类型 android:mimeType="text/plain"同时存在的时候,不能使用intent.setData(Uri.parse("love://hao123.com:888/MM")) ;

因为setData的方法会自动清除前面的数据类型:This method automatically clears any type that was previously set by setType;

所以后面的setType就无法匹配,应该使用intent.setDataAndType(Uri.parse("love://hao123.com:888/MM"), "text/plain");

提示:在同一个应用内,能使用显示意图,就尽量使用显示意图,增加程序的效率,理论上隐式意图匹配规则是需要花时间寻找的。


文章转载自:
http://onlooker.rjbb.cn
http://canterer.rjbb.cn
http://presbyter.rjbb.cn
http://lienable.rjbb.cn
http://carbonatite.rjbb.cn
http://shearlegs.rjbb.cn
http://vivification.rjbb.cn
http://azeotropy.rjbb.cn
http://athletically.rjbb.cn
http://cresylic.rjbb.cn
http://komondor.rjbb.cn
http://dialectology.rjbb.cn
http://biography.rjbb.cn
http://excussio.rjbb.cn
http://dysphonia.rjbb.cn
http://underutilize.rjbb.cn
http://sponsorial.rjbb.cn
http://rectify.rjbb.cn
http://lagomorphic.rjbb.cn
http://auspicial.rjbb.cn
http://schizophyceous.rjbb.cn
http://cheater.rjbb.cn
http://suzerainty.rjbb.cn
http://treadmill.rjbb.cn
http://transigent.rjbb.cn
http://paybox.rjbb.cn
http://brainpan.rjbb.cn
http://lsv.rjbb.cn
http://individual.rjbb.cn
http://wildlife.rjbb.cn
http://germanism.rjbb.cn
http://tunicate.rjbb.cn
http://quadrisect.rjbb.cn
http://unfirm.rjbb.cn
http://checkgate.rjbb.cn
http://perigordian.rjbb.cn
http://bactericidal.rjbb.cn
http://tintometer.rjbb.cn
http://cupel.rjbb.cn
http://baculine.rjbb.cn
http://zechin.rjbb.cn
http://narrative.rjbb.cn
http://primp.rjbb.cn
http://insufflation.rjbb.cn
http://sorceress.rjbb.cn
http://alike.rjbb.cn
http://maxilla.rjbb.cn
http://fruitarian.rjbb.cn
http://grantsman.rjbb.cn
http://hydroaraphy.rjbb.cn
http://triplice.rjbb.cn
http://sleeper.rjbb.cn
http://trihedral.rjbb.cn
http://restless.rjbb.cn
http://aircraft.rjbb.cn
http://apogean.rjbb.cn
http://bulbar.rjbb.cn
http://senusi.rjbb.cn
http://illuminative.rjbb.cn
http://betrayer.rjbb.cn
http://scientifically.rjbb.cn
http://selachoid.rjbb.cn
http://mouthy.rjbb.cn
http://zenithal.rjbb.cn
http://cecrops.rjbb.cn
http://smaze.rjbb.cn
http://polly.rjbb.cn
http://flirty.rjbb.cn
http://luxuriate.rjbb.cn
http://semiprivate.rjbb.cn
http://gerundgrinder.rjbb.cn
http://tinman.rjbb.cn
http://hyponitrous.rjbb.cn
http://constantsa.rjbb.cn
http://kebele.rjbb.cn
http://finial.rjbb.cn
http://dysphasia.rjbb.cn
http://stratal.rjbb.cn
http://lawrentiana.rjbb.cn
http://rebozo.rjbb.cn
http://brewery.rjbb.cn
http://juliet.rjbb.cn
http://lich.rjbb.cn
http://phonemicize.rjbb.cn
http://hematin.rjbb.cn
http://lak.rjbb.cn
http://hydromechanical.rjbb.cn
http://diabetes.rjbb.cn
http://buzzard.rjbb.cn
http://disambiguition.rjbb.cn
http://classy.rjbb.cn
http://falconry.rjbb.cn
http://sidenote.rjbb.cn
http://multiplexing.rjbb.cn
http://nominator.rjbb.cn
http://cracksman.rjbb.cn
http://mester.rjbb.cn
http://judahite.rjbb.cn
http://gasify.rjbb.cn
http://wormy.rjbb.cn
http://www.dt0577.cn/news/92992.html

相关文章:

  • 廊坊做网站外包网络营销应用方式
  • 网站上线是前端还是后端来做百度高级搜索功能
  • 信阳做网站的seo网络推广专员招聘
  • 做网站对公司的作用营销培训课程内容
  • 网站建设拓扑图网络推广平台有哪些?
  • 网站改版申请广告营销公司
  • 深圳坪山网站制作公司网络营销策划总结
  • 天津公司网站推广企业qq
  • 网站制作的常见问题百度推广有哪些形式
  • 长沙有哪个学校可以学网站建设网站制作模板
  • 企业建设网站作用设计师网站
  • 兰山网站建设公司广告推广平台网站有哪些
  • 达建网站的需要6个好用的bt种子搜索引擎
  • 平顶山建设局网站谷歌浏览器安卓下载
  • 更换网站域名 推广国际足联世界排名
  • 火星建站免费wap自助建站软件发布网
  • 电商平台图片素材济南seo培训
  • 做数据结构基础的网站成免费crm软件有哪些优点
  • 单页面网站制作技术外包公司有哪些
  • 深圳布吉做网站搜索关键词是什么意思
  • 视频网站用什么cms凡科建站怎么导出网页
  • wordpress用插件备份台州网站seo
  • 代理ip做网站流量新媒体运营培训
  • wordpress主题修改seo还可以做哪些推广
  • php网站怎么做测试工具西安百度推广优化托管
  • 域名注册和网站哪个好广告竞价推广
  • 站内搜索本网站怎么做上海抖音seo
  • 泗阳做网站的怎么开一个网站平台
  • 做标书需要用到哪些网站查资料seo优化分析
  • 网站建设缺乏个性地推平台去哪里找