UriMatcher 类

定义

用于帮助匹配内容提供程序中的 URI 的实用工具类。

[Android.Runtime.Register("android/content/UriMatcher", DoNotGenerateAcw=true)]
public class UriMatcher : Java.Lang.Object
[<Android.Runtime.Register("android/content/UriMatcher", DoNotGenerateAcw=true)>]
type UriMatcher = class
    inherit Object
继承
UriMatcher
属性

注解

用于帮助匹配内容提供程序中的 URI 的实用工具类。

若要使用此类,请构建对象的树 UriMatcher 。 例如:

private static final int PEOPLE = 1;
                private static final int PEOPLE_ID = 2;
                private static final int PEOPLE_PHONES = 3;
                private static final int PEOPLE_PHONES_ID = 4;
                private static final int PEOPLE_CONTACTMETHODS = 7;
                private static final int PEOPLE_CONTACTMETHODS_ID = 8;

                private static final int DELETED_PEOPLE = 20;

                private static final int PHONES = 9;
                private static final int PHONES_ID = 10;
                private static final int PHONES_FILTER = 14;

                private static final int CONTACTMETHODS = 18;
                private static final int CONTACTMETHODS_ID = 19;

                private static final int CALLS = 11;
                private static final int CALLS_ID = 12;
                private static final int CALLS_FILTER = 15;

                private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);

                static
                {
                    sURIMatcher.addURI("contacts", "people", PEOPLE);
                    sURIMatcher.addURI("contacts", "people/#", PEOPLE_ID);
                    sURIMatcher.addURI("contacts", "people/#/phones", PEOPLE_PHONES);
                    sURIMatcher.addURI("contacts", "people/#/phones/#", PEOPLE_PHONES_ID);
                    sURIMatcher.addURI("contacts", "people/#/contact_methods", PEOPLE_CONTACTMETHODS);
                    sURIMatcher.addURI("contacts", "people/#/contact_methods/#", PEOPLE_CONTACTMETHODS_ID);
                    sURIMatcher.addURI("contacts", "deleted_people", DELETED_PEOPLE);
                    sURIMatcher.addURI("contacts", "phones", PHONES);
                    sURIMatcher.addURI("contacts", "phones/filter/*", PHONES_FILTER);
                    sURIMatcher.addURI("contacts", "phones/#", PHONES_ID);
                    sURIMatcher.addURI("contacts", "contact_methods", CONTACTMETHODS);
                    sURIMatcher.addURI("contacts", "contact_methods/#", CONTACTMETHODS_ID);
                    sURIMatcher.addURI("call_log", "calls", CALLS);
                    sURIMatcher.addURI("call_log", "calls/filter/*", CALLS_FILTER);
                    sURIMatcher.addURI("call_log", "calls/#", CALLS_ID);
                }

从 API 级别 android.os.Build.VERSION_CODES#JELLY_BEAN_MR2开始,路径可以以前导斜杠开头。 例如:

sURIMatcher.addURI("contacts", "/people", PEOPLE);

然后,当需要与 URI 匹配时,请调用 #match,提供已给定的 URL。 可以使用结果生成查询、返回类型、插入或删除行或所需的任何内容,而无需复制本来需要的所有 if-else 逻辑。 例如:

public String getType(Uri url)
                {
                    int match = sURIMatcher.match(url);
                    switch (match)
                    {
                        case PEOPLE:
                            return "vnd.android.cursor.dir/person";
                        case PEOPLE_ID:
                            return "vnd.android.cursor.item/person";
            ... snip ...
                            return "vnd.android.cursor.dir/snail-mail";
                        case PEOPLE_ADDRESS_ID:
                            return "vnd.android.cursor.item/snail-mail";
                        default:
                            return null;
                    }
                }

而不是:

public String getType(Uri url)
                {
                    List<String> pathSegments = url.getPathSegments();
                    if (pathSegments.size() >= 2) {
                        if ("people".equals(pathSegments.get(1))) {
                            if (pathSegments.size() == 2) {
                                return "vnd.android.cursor.dir/person";
                            } else if (pathSegments.size() == 3) {
                                return "vnd.android.cursor.item/person";
            ... snip ...
                                return "vnd.android.cursor.dir/snail-mail";
                            } else if (pathSegments.size() == 3) {
                                return "vnd.android.cursor.item/snail-mail";
                            }
                        }
                    }
                    return null;
                }

android.content.UriMatcherJava 文档。

此页面的某些部分是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的条款使用。

构造函数

UriMatcher(Int32)

创建 URI 树的根节点。

UriMatcher(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

字段

NoMatch

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
JniPeerMembers

用于帮助匹配内容提供程序中的 URI 的实用工具类。

PeerReference

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不应直接从代码中使用。

方法

AddURI(String, String, Int32)

添加要匹配的 URI,以及匹配此 URI 时要返回的代码。

Clone()

创建并返回此对象的副本。

(继承自 Object)
Dispose()

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
Dispose(Boolean)

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
Equals(Object)

指示某个其他对象是否“等于”此对象。

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
JavaFinalize()

当垃圾回收确定不再引用对象时,由垃圾回收器对对象调用。

(继承自 Object)
Match(Uri)

尝试与 URL 中的路径匹配。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
ToArray<T>()

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
Wait()

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>。<>

(继承自 Object)
Wait(Int64)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)
Wait(Int64, Int32)

导致当前线程等待,直到它被唤醒,通常是通过 em <通知/em> 或 <em>interrupted</em>,或直到经过一定数量的实时。<>

(继承自 Object)

显式接口实现

IJavaPeerable.Disposed()

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
IJavaPeerable.Finalized()

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

用于帮助匹配内容提供程序中的 URI 的实用工具类。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

用于帮助匹配内容提供程序中的 URI 的实用工具类。

GetJniTypeName(IJavaPeerable)

用于帮助匹配内容提供程序中的 URI 的实用工具类。

适用于