public class IntentFilter
extends Object
implements Parcelable
java.lang.Object | |
↳ | android.content.IntentFilter |
要匹配的意向值的结构化描述。 IntentFilter可以与Intent中的动作,类别和数据(通过其类型,方案和/或路径)进行匹配。 它还包含用于排序多个匹配滤波器的“优先级”值。
IntentFilter对象通常使用 intent-filter
标签作为包的 AndroidManifest.xml
文件的一部分以XML格式创建。
有三种您可以过滤的Intent特性: 操作 , 数据和类别 。 对于每一个这些特征也可以提供多个可能的匹配值(通过addAction(String)
, addDataType(String)
, addDataScheme(String)
, addDataSchemeSpecificPart(String, int)
, addDataAuthority(String, String)
, addDataPath(String, int)
,和addCategory(String)
,分别地)。 对于行动,如果没有给出任何值,则不会测试该字段(将其视为通配符); 如果没有指定数据特征,那么过滤器将只匹配不包含数据的意图。
数据特征本身分为三个属性:类型,方案,权限和路径。 任何指定的内容都必须与Intent的内容相匹配。 如果你指定了一个方案,但没有类型,只有没有类型的Intent(比如mailto :)会匹配; content:URI永远不会匹配,因为它们始终具有由其内容提供者提供的MIME类型。 指定没有方案的类型具有某种特殊含义:它将匹配没有URI字段的Intent,或者匹配具有content:或file:URI的Intent。 如果您不指定,则只有一个没有数据或类型的Intent会匹配。 要指定权限,还必须指定一个或多个与之关联的方案。 要指定路径,还必须指定一个或多个权限以及与之关联的一个或多个方案。
有关如何创建和解析意图的信息,请阅读 Intents and Intent Filters开发人员指南。
匹配基于以下规则。 请注意,对于与Intent匹配的IntentFilter,必须满足三个条件: 操作和类别必须匹配,并且数据( 数据类型和数据模式+权限+路径(如果指定)必须匹配(有关如何更多详细信息,请参见match(ContentResolver, Intent, boolean, String)
数据字段匹配)。
如果任何给定值与Intent 操作匹配,则操作匹配; 如果过滤器没有指定任何操作,那么它只会匹配不包含操作的Intents。
如果任何给定值与Intent 类型匹配,则数据类型匹配。 意图类型通过调用resolveType(ContentResolver)
来确定。 通配符可用于Intent和IntentFilter中的MIME子类型,因此“audio / *”类型将匹配“audio / mpeg”,“audio / aiff”,“audio / *”等。 请注意,这里的MIME类型匹配区分大小写 ,与正式的RFC MIME类型不同! 因此,您应该始终为您的MIME类型使用小写字母。
如果任何给定值与Intent数据的方案匹配,则数据方案匹配。 意图方案通过在该URI上调用getData()
和getScheme()
来确定。 请注意,这里的方案匹配区分大小写 ,与正式的RFC方案不同! 因此,您应该始终为您的计划使用小写字母。
数据方案的具体部分 ,如果任何给定值的符合目的的数据方案的特定部分和已经匹配了意图, 或在过滤器中提供的方案没有特定部分在过滤器中的数据方案之一相匹配。 意向方案特定部分通过在该URI上调用getData()
和getSchemeSpecificPart()
来确定。 请注意,方案特定部件匹配区分大小写 。
数据权限 ,如果任何给定值的符合目的的数据权限,并在过滤器中的数据方案之一已经匹配了意向, 或在过滤器中没有提供的权威作者匹配。 意向权限通过调用该URI上的getData()
和getAuthority()
来确定。 请注意,这里的权限匹配区分大小写 ,与正式的RFC主机名不同! 因此,您应该始终使用小写字母作为您的权限。
如果任何给定值的符合目的的数据路径和两个在滤波器的方案和权威针对意图已匹配, 或在过滤器中没有提供路径数据路径相匹配。 意向权限通过调用该URI上的getData()
和getPath()
来确定。
分类匹配,如果所有在过滤器中给出的意图比赛类别的类别。 过滤器中不在Intent中的额外类别不会导致匹配失败。 请注意,与操作不同,没有类别的IntentFilter只会匹配没有任何类别的Intent。
Nested classes |
|
---|---|
class |
IntentFilter.AuthorityEntry 这是Iterator中由 |
class |
IntentFilter.MalformedMimeTypeException 当给定的MIME类型没有有效的语法时,会引发此异常。 |
Constants |
|
---|---|
int |
MATCH_ADJUSTMENT_MASK 匹配常数的一部分,将质量调整应用于匹配的基本类别。 |
int |
MATCH_ADJUSTMENT_NORMAL 质量调整适用于表示默认基准值的匹配类别; 数量越多,质量越好,而数量越少,质量越低。 |
int |
MATCH_CATEGORY_EMPTY 过滤器匹配没有指定数据的意图。 |
int |
MATCH_CATEGORY_HOST 过滤器将意图与相同的数据URI方案和授权主机相匹配。 |
int |
MATCH_CATEGORY_MASK 描述发生的匹配类别的匹配常数部分。 |
int |
MATCH_CATEGORY_PATH 过滤器将意图与相同的数据URI方案,权限和路径相匹配。 |
int |
MATCH_CATEGORY_PORT 过滤器将意图与相同的数据URI方案和权限主机和端口相匹配。 |
int |
MATCH_CATEGORY_SCHEME 过滤器将意图与相同的数据URI方案相匹配。 |
int |
MATCH_CATEGORY_SCHEME_SPECIFIC_PART 过滤器将意图与相同的数据URI方案和方案特定部分相匹配。 |
int |
MATCH_CATEGORY_TYPE 过滤器匹配具有相同数据MIME类型的意图。 |
int |
NO_MATCH_ACTION 由于动作不同,过滤器不匹配。 |
int |
NO_MATCH_CATEGORY 过滤器不匹配,因为它需要一个或多个不在Intent中的类别。 |
int |
NO_MATCH_DATA 由于数据URI不同,筛选器不匹配。 |
int |
NO_MATCH_TYPE 由于不同的MIME类型,过滤器不匹配。 |
int |
SYSTEM_HIGH_PRIORITY 系统高优先级接收器 |
int |
SYSTEM_LOW_PRIORITY 系统低优先级接收器放置的过滤器值 |
Inherited constants |
---|
From interface android.os.Parcelable
|
Fields |
|
---|---|
public static final Creator<IntentFilter> |
CREATOR |
Public constructors |
|
---|---|
IntentFilter() 新的空IntentFilter。 |
|
IntentFilter(String action) 新的IntentFilter匹配没有数据的单个操作。 |
|
IntentFilter(String action, String dataType) 新的IntentFilter匹配单个操作和数据类型。 |
|
IntentFilter(IntentFilter o) 包含现有过滤器副本的新IntentFilter。 |
Public methods |
|
---|---|
final Iterator<String> |
actionsIterator() 在过滤器的操作上返回一个迭代器。 |
final void |
addAction(String action) 添加新的Intent操作以匹配。 |
final void |
addCategory(String category) 添加一个新的Intent类别以匹配。 |
final void |
addDataAuthority(String host, String port) 添加一个新的Intent数据权限以匹配。 |
final void |
addDataPath(String path, int type) 添加一个新的Intent数据路径以匹配。 |
final void |
addDataScheme(String scheme) 添加一个新的Intent数据方案以匹配。 |
final void |
addDataSchemeSpecificPart(String ssp, int type) 添加一个新的Intent数据“方案特定部分”以匹配。 |
final void |
addDataType(String type) 添加一个新的Intent数据类型以匹配。 |
final Iterator<IntentFilter.AuthorityEntry> |
authoritiesIterator() 通过过滤器的数据权限返回一个迭代器。 |
final Iterator<String> |
categoriesIterator() 在过滤器的类别上返回一个迭代器。 |
final int |
countActions() 返回过滤器中的动作数量。 |
final int |
countCategories() 返回过滤器中的类别数量。 |
final int |
countDataAuthorities() 返回过滤器中的数据权限的数量。 |
final int |
countDataPaths() 返回过滤器中的数据路径数量。 |
final int |
countDataSchemeSpecificParts() 返回过滤器中数据方案特定部分的数量。 |
final int |
countDataSchemes() 返回过滤器中的数据方案数量。 |
final int |
countDataTypes() 返回过滤器中的数据类型数量。 |
static IntentFilter |
create(String action, String dataType) 使用指定的操作和MIME类型创建一个新的IntentFilter实例,您知道MIME类型的格式正确。 |
final int |
describeContents() 描述此Parcelable实例的封送表示中包含的特殊对象的种类。 |
void |
dump(Printer du, String prefix) |
final String |
getAction(int index) 在过滤器中返回一个操作。 |
final String |
getCategory(int index) 在过滤器中返回一个类别。 |
final IntentFilter.AuthorityEntry |
getDataAuthority(int index) 返回过滤器中的数据权限。 |
final PatternMatcher |
getDataPath(int index) 返回过滤器中的数据路径。 |
final String |
getDataScheme(int index) 返回过滤器中的数据方案。 |
final PatternMatcher |
getDataSchemeSpecificPart(int index) 返回过滤器中的数据方案特定部分。 |
final String |
getDataType(int index) 在过滤器中返回一个数据类型。 |
final int |
getPriority() 返回此过滤器的优先级。 |
final boolean |
hasAction(String action) 给定的操作是否包含在过滤器中? 请注意,如果过滤器不包含任何操作,则将始终返回false。 |
final boolean |
hasCategory(String category) 过滤器中是否包含给定类别? |
final boolean |
hasDataAuthority(Uri data) 过滤器中是否包含给定的数据权限? 请注意,如果过滤器不包含任何权限,则将始终返回false。 |
final boolean |
hasDataPath(String data) 给定的数据路径是否包含在过滤器中? 请注意,如果过滤器不包含任何路径,则始终会返回false。 |
final boolean |
hasDataScheme(String scheme) 给定的数据方案是否包含在过滤器中? 请注意,如果过滤器不包含任何方案,则始终会返回false。 |
final boolean |
hasDataSchemeSpecificPart(String data) 过滤器中是否包含给定的数据方案特定部分? 请注意,如果过滤器不包含任何方案特定部分,则始终会返回false。 |
final boolean |
hasDataType(String type) 过滤器中是否包含给定的数据类型? 请注意,如果过滤器不包含任何类型,则将始终返回false。 |
final int |
match(String action, String type, String scheme, Uri data, Set<String> categories, String logTag) 测试此过滤器是否与给定的意图数据匹配。 |
final int |
match(ContentResolver resolver, Intent intent, boolean resolve, String logTag) 测试这个过滤器是否符合给定的 意图 。 |
final boolean |
matchAction(String action) 将此过滤器与Intent的操作匹配。 |
final String |
matchCategories(Set<String> categories) 将此过滤器与Intent的类别匹配。 |
final int |
matchData(String type, String scheme, Uri data) 将此过滤器与Intent的数据(类型,方案和路径)匹配。 |
final int |
matchDataAuthority(Uri data) 将此意向过滤器与给定的Intent数据匹配。 |
final Iterator<PatternMatcher> |
pathsIterator() 在过滤器的数据路径上返回一个迭代器。 |
void |
readFromXml(XmlPullParser parser) |
final Iterator<PatternMatcher> |
schemeSpecificPartsIterator() 将过滤器的数据方案特定部分返回一个迭代器。 |
final Iterator<String> |
schemesIterator() 通过过滤器的数据方案返回一个迭代器。 |
final void |
setPriority(int priority) 修改此过滤器的优先级。 |
final Iterator<String> |
typesIterator() 在过滤器的数据类型上返回一个迭代器。 |
final void |
writeToParcel(Parcel dest, int flags) 将此对象平铺到一个包裹中。 |
void |
writeToXml(XmlSerializer serializer) 将IntentFilter的内容作为XML流写入。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface android.os.Parcelable
|
int MATCH_ADJUSTMENT_MASK
匹配常数的一部分,将质量调整应用于匹配的基本类别。 价值MATCH_ADJUSTMENT_NORMAL
是不调整; 更高的数字比提高质量更高,而更少的数字则会降低质量。
常量值:65535(0x0000ffff)
int MATCH_ADJUSTMENT_NORMAL
质量调整适用于表示默认基准值的匹配类别; 数量越多,质量越好,而数量越少,质量越低。
常量值:32768(0x00008000)
int MATCH_CATEGORY_EMPTY
过滤器匹配没有指定数据的意图。
常量值:1048576(0x00100000)
int MATCH_CATEGORY_HOST
过滤器将意图与相同的数据URI方案和授权主机相匹配。
常量值:3145728(0x00300000)
int MATCH_CATEGORY_MASK
描述发生的匹配类别的匹配常数部分。 可以是MATCH_CATEGORY_EMPTY
, MATCH_CATEGORY_SCHEME
, MATCH_CATEGORY_SCHEME_SPECIFIC_PART
, MATCH_CATEGORY_HOST
, MATCH_CATEGORY_PORT
, MATCH_CATEGORY_PATH
,或MATCH_CATEGORY_TYPE
。 较高的值表示更好的匹配。
常量值:268369920(0x0fff0000)
int MATCH_CATEGORY_PATH
过滤器将意图与相同的数据URI方案,权限和路径相匹配。
常量值:5242880(0x00500000)
int MATCH_CATEGORY_PORT
过滤器将意图与相同的数据URI方案和权限主机和端口相匹配。
常量值:4194304(0x00400000)
int MATCH_CATEGORY_SCHEME
过滤器将意图与相同的数据URI方案相匹配。
常量值:2097152(0x00200000)
int MATCH_CATEGORY_SCHEME_SPECIFIC_PART
过滤器将意图与相同的数据URI方案和方案特定部分相匹配。
常量值:5767168(0x00580000)
int MATCH_CATEGORY_TYPE
过滤器匹配具有相同数据MIME类型的意图。
常量值:6291456(0x00600000)
int NO_MATCH_CATEGORY
过滤器不匹配,因为它需要一个或多个不在Intent中的类别。
常量值:-4(0xfffffffc)
int SYSTEM_HIGH_PRIORITY
系统高优先级接收器setPriority(int)
的过滤器值; 也就是应该在应用程序代码之前执行的接收器。 应用程序不应使用具有此优先级或更高优先级的筛选器
也可以看看:
常量值:1000(0x000003e8)
int SYSTEM_LOW_PRIORITY
该过滤器setPriority(int)
,其中,系统的低优先级的接收器被置于值; 也就是应该在应用程序代码之后执行的接收器。 应用程序不应使用具有此优先级或更低优先级的筛选器
也可以看看:
常量值:-1000(0xfffffc18)
IntentFilter (String action)
新的IntentFilter匹配没有数据的单个操作。 如果随后没有指定数据特征,则过滤器将仅匹配不包含数据的意图。
Parameters | |
---|---|
action |
String : The action to match, i.e. Intent.ACTION_MAIN. |
IntentFilter (String action, String dataType)
新的IntentFilter匹配单个操作和数据类型。
注意:与正式的RFC MIME类型不同,Android框架中的MIME类型匹配区分大小写。 因此,您应该始终使用小写字母编写MIME类型,并且您在从Android之外接收到的任何MIME类型应在转换为小写字母之前转换为小写。
如果给定的MIME类型在语法上不正确,则抛出 IntentFilter.MalformedMimeTypeException
。
Parameters | |
---|---|
action |
String : The action to match, i.e. Intent.ACTION_VIEW. |
dataType |
String : The type to match, i.e. "vnd.android.cursor.dir/person". |
Throws | |
---|---|
IntentFilter.MalformedMimeTypeException |
IntentFilter (IntentFilter o)
包含现有过滤器副本的新IntentFilter。
Parameters | |
---|---|
o |
IntentFilter : The original filter to copy. |
Iterator<String> actionsIterator ()
在过滤器的操作上返回一个迭代器。 如果没有动作,则返回null。
Returns | |
---|---|
Iterator<String> |
void addAction (String action)
添加新的Intent操作以匹配。 如果过滤器中包含任何操作,则Intent的操作必须是其中的一个值才能匹配。 如果不包含任何操作,则意向操作将被忽略。
Parameters | |
---|---|
action |
String : Name of the action to match, i.e. Intent.ACTION_VIEW. |
void addCategory (String category)
添加一个新的Intent类别以匹配。 类别的语义与行为相反--Intent包含它需要的类别,所有这些类别都必须包含在过滤器中才能匹配。 换句话说,向过滤器添加类别对匹配没有影响,除非该类别在意图中指定。
Parameters | |
---|---|
category |
String : Name of category to match, i.e. Intent.CATEGORY_EMBED. |
void addDataAuthority (String host, String port)
添加一个新的Intent数据权限以匹配。 该过滤器必须包含一个或多个方案(通过addDataScheme(String)
)以供权限审议。 如果过滤器中包含任何权限,则Intent的数据必须与其中的一个匹配。 如果没有权限,那么只有该方案必须匹配。
注意:与正式RFC主机名不同,Android框架中的主机名区分大小写。 因此,您应该始终使用小写字母编写主机名称,并且在从Android外部接收到的任何主机名称应在此处提供之前转换为小写字母。
Parameters | |
---|---|
host |
String : The host part of the authority to match. May start with a single '*' to wildcard the front of the host name. |
port |
String : Optional port part of the authority to match. If null, any port is allowed. |
void addDataPath (String path, int type)
添加一个新的Intent数据路径以匹配。 过滤器必须包含一个或多个方案(通过addDataScheme(String)
) 和一个或多个权威机构(通过addDataAuthority(String, String)
),以便考虑路径。 如果过滤器中包含任何路径,则Intent的数据必须与其中的一个匹配。 如果不包含路径,则只有方案/权限必须匹配。
这里给出的路径可以是必须直接匹配或匹配前缀的文字,也可以是简单的匹配模式。 如果是后者,则可以在模式中的任意位置使用'*'来匹配前一个字符的零个或多个实例,'。'。 作为匹配任何字符的通配符,'\'来转义下一个字符。
Parameters | |
---|---|
path |
String : Either a raw string that must exactly match the file path, or a simple pattern, depending on type. |
type |
int : Determines how path will be compared to determine a match: either PATTERN_LITERAL , PATTERN_PREFIX , or PATTERN_SIMPLE_GLOB . |
void addDataScheme (String scheme)
添加一个新的Intent数据方案以匹配。 如果任何方案包括在过滤器,然后一个Intent的数据必须是这些方案中的任一个或一个匹配的数据类型。 如果不包含任何方案,则只有在不包含任何数据的情况下,Intent才会匹配。
注意:与正式RFC方案不同,Android框架中的方案匹配区分大小写。 因此,您应该始终使用小写字母来编写您的计划,并且您在从Android之外收到的任何计划应在转换为小写字母之前转换为小写。
Parameters | |
---|---|
scheme |
String : Name of the scheme to match, i.e. "http". |
void addDataSchemeSpecificPart (String ssp, int type)
添加一个新的Intent数据“方案特定部分”以匹配。 过滤器必须包含一个或多个方案(通过addDataScheme(String)
),以便考虑方案特定部分。 如果过滤器中包含任何方案特定部分,则Intent的数据必须与其中的一个匹配。 如果不包括方案特定部分,那么只有方案必须匹配。
这个匹配的“方案特定部分”是由Uri.getSchemeSpecificPart
返回的字符串。 对于包含路径的Uris,这种匹配通常不感兴趣,因为addDataAuthority(String, String)
和addDataPath(String, int)
可以提供更好的匹配它们的机制。 但是,对于不包含路径的Uris,权限和路径是空的,所以这是与非方案部分匹配的唯一方式。
Parameters | |
---|---|
ssp |
String : Either a raw string that must exactly match the scheme specific part path, or a simple pattern, depending on type. |
type |
int : Determines how ssp will be compared to determine a match: either PATTERN_LITERAL , PATTERN_PREFIX , or PATTERN_SIMPLE_GLOB . |
void addDataType (String type)
添加一个新的Intent数据类型以匹配。 如果任何类型都包括在过滤器中,然后一个Intent的数据必须是这些类型中的任一个或一个匹配方案。 如果不包含数据类型,那么Intent只会在没有指定数据的情况下匹配。
注意:与正式的RFC MIME类型不同,Android框架中的MIME类型匹配区分大小写。 因此,您应该始终使用小写字母编写MIME类型,并且您在从Android之外接收到的任何MIME类型应在转换为小写字母之前转换为小写。
如果给定的MIME类型在语法上不正确,则抛出 IntentFilter.MalformedMimeTypeException
。
Parameters | |
---|---|
type |
String : Name of the data type to match, i.e. "vnd.android.cursor.dir/person". |
Throws | |
---|---|
IntentFilter.MalformedMimeTypeException |
Iterator<IntentFilter.AuthorityEntry> authoritiesIterator ()
通过过滤器的数据权限返回一个迭代器。
Returns | |
---|---|
Iterator<IntentFilter.AuthorityEntry> |
Iterator<String> categoriesIterator ()
在过滤器的类别上返回一个迭代器。
Returns | |
---|---|
Iterator<String> |
Iterator if this filter has categories or null if none. |
int countDataSchemeSpecificParts ()
返回过滤器中数据方案特定部分的数量。
Returns | |
---|---|
int |
IntentFilter create (String action, String dataType)
使用指定的操作和MIME类型创建一个新的IntentFilter实例,您知道MIME类型的格式正确。 这会捕获构造函数可以调用的IntentFilter.MalformedMimeTypeException
异常,并将其变为运行时异常。
Parameters | |
---|---|
action |
String : The action to match, i.e. Intent.ACTION_VIEW. |
dataType |
String : The type to match, i.e. "vnd.android.cursor.dir/person". |
Returns | |
---|---|
IntentFilter |
A new IntentFilter for the given action and type. |
也可以看看:
int describeContents ()
描述此Parcelable实例的封送表示中包含的特殊对象的种类。 例如,如果对象将在writeToParcel(Parcel, int)
的输出中包含writeToParcel(Parcel, int)
,则此方法的返回值必须包含CONTENTS_FILE_DESCRIPTOR
位。
Returns | |
---|---|
int |
a bitmask indicating the set of special object types marshaled by this Parcelable object instance. |
String getAction (int index)
在过滤器中返回一个操作。
Parameters | |
---|---|
index |
int
|
Returns | |
---|---|
String |
String getCategory (int index)
在过滤器中返回一个类别。
Parameters | |
---|---|
index |
int
|
Returns | |
---|---|
String |
IntentFilter.AuthorityEntry getDataAuthority (int index)
返回过滤器中的数据权限。
Parameters | |
---|---|
index |
int
|
Returns | |
---|---|
IntentFilter.AuthorityEntry |
PatternMatcher getDataPath (int index)
返回过滤器中的数据路径。
Parameters | |
---|---|
index |
int
|
Returns | |
---|---|
PatternMatcher |
String getDataScheme (int index)
返回过滤器中的数据方案。
Parameters | |
---|---|
index |
int
|
Returns | |
---|---|
String |
PatternMatcher getDataSchemeSpecificPart (int index)
返回过滤器中的数据方案特定部分。
Parameters | |
---|---|
index |
int
|
Returns | |
---|---|
PatternMatcher |
String getDataType (int index)
在过滤器中返回一个数据类型。
Parameters | |
---|---|
index |
int
|
Returns | |
---|---|
String |
int getPriority ()
返回此过滤器的优先级。
Returns | |
---|---|
int |
The priority of the filter. |
也可以看看:
boolean hasAction (String action)
给定的操作是否包含在过滤器中? 请注意,如果过滤器不包含任何操作,则将始终返回false。
Parameters | |
---|---|
action |
String : The action to look for. |
Returns | |
---|---|
boolean |
True if the action is explicitly mentioned in the filter. |
boolean hasCategory (String category)
过滤器中是否包含给定类别?
Parameters | |
---|---|
category |
String : The category that the filter supports. |
Returns | |
---|---|
boolean |
True if the category is explicitly mentioned in the filter. |
boolean hasDataAuthority (Uri data)
过滤器中是否包含给定的数据权限? 请注意,如果过滤器不包含任何权限,则将始终返回false。
Parameters | |
---|---|
data |
Uri : The data whose authority is being looked for. |
Returns | |
---|---|
boolean |
Returns true if the data string matches an authority listed in the filter. |
boolean hasDataPath (String data)
给定的数据路径是否包含在过滤器中? 请注意,如果过滤器不包含任何路径,则始终会返回false。
Parameters | |
---|---|
data |
String : The data path to look for. This is without the scheme prefix. |
Returns | |
---|---|
boolean |
True if the data string matches a path listed in the filter. |
boolean hasDataScheme (String scheme)
给定的数据方案是否包含在过滤器中? 请注意,如果过滤器不包含任何方案,则始终会返回false。
Parameters | |
---|---|
scheme |
String : The data scheme to look for. |
Returns | |
---|---|
boolean |
True if the scheme is explicitly mentioned in the filter. |
boolean hasDataSchemeSpecificPart (String data)
过滤器中是否包含给定的数据方案特定部分? 请注意,如果过滤器不包含任何方案特定部分,则始终会返回false。
Parameters | |
---|---|
data |
String : The scheme specific part that is being looked for. |
Returns | |
---|---|
boolean |
Returns true if the data string matches a scheme specific part listed in the filter. |
boolean hasDataType (String type)
过滤器中是否包含给定的数据类型? 请注意,如果过滤器不包含任何类型,则将始终返回false。
Parameters | |
---|---|
type |
String : The data type to look for. |
Returns | |
---|---|
boolean |
True if the type is explicitly mentioned in the filter. |
int match (String action, String type, String scheme, Uri data, Set<String> categories, String logTag)
测试此过滤器是否与给定的意图数据匹配。 如果Intent中的操作和类别与过滤器匹配,则匹配只会成功,如IntentFilter
; 在这种情况下,返回的匹配结果将按照matchData(String, String, Uri)
。
Parameters | |
---|---|
action |
String : The intent action to match against (Intent.getAction). |
type |
String : The intent type to match against (Intent.resolveType()). |
scheme |
String : The data scheme to match against (Intent.getScheme()). |
data |
Uri : The data URI to match against (Intent.getData()). |
categories |
Set : The categories to match against (Intent.getCategories()). |
logTag |
String : Tag to use in debugging messages. |
Returns | |
---|---|
int |
Returns either a valid match constant (a combination of MATCH_CATEGORY_MASK and MATCH_ADJUSTMENT_MASK ), or one of the error codes NO_MATCH_TYPE if the type didn't match, NO_MATCH_DATA if the scheme/path didn't match, NO_MATCH_ACTION if the action didn't match, or NO_MATCH_CATEGORY if one or more categories didn't match. |
int match (ContentResolver resolver, Intent intent, boolean resolve, String logTag)
测试这个过滤器是否符合给定的 意图 。
Parameters | |
---|---|
resolver |
ContentResolver
|
intent |
Intent : The Intent to compare against. |
resolve |
boolean : If true, the intent's type will be resolved by calling Intent.resolveType(); otherwise a simple match against Intent.type will be performed. |
logTag |
String : Tag to use in debugging messages. |
Returns | |
---|---|
int |
Returns either a valid match constant (a combination of MATCH_CATEGORY_MASK and MATCH_ADJUSTMENT_MASK ), or one of the error codes NO_MATCH_TYPE if the type didn't match, NO_MATCH_DATA if the scheme/path didn't match, NO_MATCH_ACTION if the action didn't match, or NO_MATCH_CATEGORY if one or more categories didn't match. |
boolean matchAction (String action)
将此过滤器与Intent的操作匹配。 如果过滤器没有指定任何操作,则匹配将始终失败。
Parameters | |
---|---|
action |
String : The desired action to look for. |
Returns | |
---|---|
boolean |
True if the action is listed in the filter. |
String matchCategories (Set<String> categories)
将此过滤器与Intent的类别匹配。 意图中的每个类别都必须由过滤器指定; 如果有任何不在过滤器中,则匹配失败。
Parameters | |
---|---|
categories |
Set : The categories included in the intent, as returned by Intent.getCategories(). |
Returns | |
---|---|
String |
If all categories match (success), null; else the name of the first category that didn't match. |
int matchData (String type, String scheme, Uri data)
将此过滤器与Intent的数据(类型,方案和路径)匹配。 如果过滤器没有指定任何类型并且没有指定任何方案/路径,则只有当意图不指定类型或数据时,匹配才会成功。 如果过滤器没有指定任何方案,它将隐含地将意图与没有方案,或方案“content:”或“file:”(基本上仅执行MIME类型匹配)相匹配。 如果过滤器没有指定任何MIME类型,则Intent也不能指定MIME类型。
请注意,为了与权限相匹配,还必须指定权限所在的基本方案。要与数据路径匹配,必须指定方案和权限。 如果过滤器没有指定它匹配的任何类型或方案,则它被认为是空的(任何授权或数据路径被忽略,就像它也是空的一样)。
注意:与正式的RFC定义不同,Android框架中的MIME类型,Uri方案和主机名匹配区分大小写。 因此,您应该始终使用小写字母编写这些元素,并对从Android以外收到的任何MIME类型或Uris进行规范化,以确保这些元素在提供给他们之前是小写字母。
Parameters | |
---|---|
type |
String : The desired data type to look for, as returned by Intent.resolveType(). |
scheme |
String : The desired data scheme to look for, as returned by Intent.getScheme(). |
data |
Uri : The full data string to match against, as supplied in Intent.data. |
Returns | |
---|---|
int |
Returns either a valid match constant (a combination of MATCH_CATEGORY_MASK and MATCH_ADJUSTMENT_MASK ), or one of the error codes NO_MATCH_TYPE if the type didn't match or NO_MATCH_DATA if the scheme/path didn't match. |
int matchDataAuthority (Uri data)
将此意向过滤器与给定的Intent数据匹配。 这忽略了数据方案 - 与matchData(String, String, Uri)
不同,权限将匹配,无论是否存在匹配方案。
Parameters | |
---|---|
data |
Uri : The data whose authority is being looked for. |
Returns | |
---|---|
int |
Returns either MATCH_CATEGORY_HOST , MATCH_CATEGORY_PORT , NO_MATCH_DATA . |
Iterator<PatternMatcher> pathsIterator ()
在过滤器的数据路径上返回一个迭代器。
Returns | |
---|---|
Iterator<PatternMatcher> |
void readFromXml (XmlPullParser parser)
Parameters | |
---|---|
parser |
XmlPullParser
|
Throws | |
---|---|
XmlPullParserException |
|
IOException |
Iterator<PatternMatcher> schemeSpecificPartsIterator ()
将过滤器的数据方案特定部分返回一个迭代器。
Returns | |
---|---|
Iterator<PatternMatcher> |
Iterator<String> schemesIterator ()
通过过滤器的数据方案返回一个迭代器。
Returns | |
---|---|
Iterator<String> |
void setPriority (int priority)
修改此过滤器的优先级。 这只影响接收器滤波器。 活动过滤器的优先级以XML格式设置,不能以编程方式更改。 默认优先级为0.正值将在默认值之前,较低值将在其之后。 应用程序应使用大于SYSTEM_LOW_PRIORITY
且小于SYSTEM_HIGH_PRIORITY
。
Parameters | |
---|---|
priority |
int : The new priority value. |
Iterator<String> typesIterator ()
在过滤器的数据类型上返回一个迭代器。
Returns | |
---|---|
Iterator<String> |
void writeToParcel (Parcel dest, int flags)
将此对象平铺到一个包裹中。
Parameters | |
---|---|
dest |
Parcel : The Parcel in which the object should be written. |
flags |
int : Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE . |
void writeToXml (XmlSerializer serializer)
将IntentFilter的内容作为XML流写入。
Parameters | |
---|---|
serializer |
XmlSerializer
|
Throws | |
---|---|
IOException |