我是靠谱客的博主 想人陪小懒猪,最近开发中收集的这篇文章主要介绍android权限列别,android 隐式Intent 匹配原则,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一个Intent过滤器可指定多个操作,类别和数据特征。

1、操作(action)

如果一个Intent有一个操作,Intent过滤器必须将该过操作包含到其操作列表中,或者不包含任何操作。

所以,如果Intent过滤器没有定义操作,则该Intent过滤器可匹配所有传入的Intent操作。

2、数据(data)

如果Intent过虑器中没有指定数据特征,他将不会匹配包含任何数据或数据特性的传入的Intent。这意味

着它仅查找没有指定任何数据Intent。这意味着他仅查找没有指定任何数据的Intent

过滤器中缺少数据和缺少操作的情况是相反的,如果过滤器没有操作,将匹配所有内容,如果过滤器中没有数据,Intent中的每个部分数据都不会匹配

3、数据类型

要匹配一种数据类型,传入Intent的数据类型必须是Intent过滤器中指定的数据类型之一。Intent的数据类型必须存在于Intent过滤器中;

传入Intent的数据类型可通过两种方式确定。第一种是,如果数据URI 是一个内容或文件URI,

ContentProvider或Android将确定类型。第二种方式是查看Intent的显示数据类型。此方式要生效,

传入的Intent不应设置数据URI,因为当对Intent调用setType是会自动设置它。

作为MIME类型规范的一部分,android还支持使用星号(*)作为子类型来涵盖所有可能的子类型。另外

,数据类型区分大小写。

4、数据模式

要匹配数据模式,传入Intent的数据模式必须是Intent过滤器指定的模式之一。换句话说传入的数据模式必须在于Intent过滤器中

传入Intent的模式是数据URI的第一部分.Intent没有设置模式的方法,完全 从http://www.somesite.com/path这样的数据URI派生而来。

如果传入Intent URI的数据模式为content:或file:,它会被视为一个匹配值,无论Intent过滤器模式、域和路径是什么。换句话说,

所有组件都应该支持这两种URL类型。

5、数据授权

如果过滤器中没有授权,则可以匹配任何传入的数据URI的授权(或域名)。如果在过滤器中指定了授权,比如www.somesite.com

那么一种模式和一种授权应该与传入Intent的数据URI相匹配。

例如:如果 在Intent过滤器中指定www.somesite.com作为授权,并且模式为https,那么该Intent将无法匹配http://www.somesite.com/path因为http没有支持指定的模式。

6、数据路径

如果Intent过滤器中没有数据路径,则可以匹配仁和传入数据URI的路径。如果在过滤器中指定了路径,比如somepath,那么

一种模式、一种授权和一个数据路径应该与传入的Intent的数据URI相匹配.

换句话说,模式、授权和路径协同验证传入Intent的URI,比如http://www.somesite.com/somepath

所以path,authority和scheme不是孤立工作的,而是协同工作。

7、Intent类型

传入的Intent中的每个类别都必须存在于过滤器类别列表中,过滤器中夜可以包含更多的类别,如果过滤器中没有任何列别,

它只会与没有提及任何类别的Intent匹配。

但是,有一点需要注意,android将所有传递给startActivity()的隐式Intent视为好像它们至少包含一个类别:android.intent.category.DEFAULT

如果传入的Intent为隐式Intent,startActivity()中的代码只会搜索定义DEFAULT类别的活动,所以每个希望通过隐式Intent调用的活动都必须在其过滤器中

包含默认类别.

最后

以上就是想人陪小懒猪为你收集整理的android权限列别,android 隐式Intent 匹配原则的全部内容,希望文章能够帮你解决android权限列别,android 隐式Intent 匹配原则所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部