语言

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;
                }

Java文档android.content.UriMatcher。

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

构造函数

名称 说明
UriMatcher(Int32)

创建 URI 树的根节点。

UriMatcher(IntPtr, JniHandleOwnership)

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

字段

名称 说明
NoMatch

属性

名称 说明
Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
JniIdentityHashCode

获取互操作运行时分配给此Java对等的标识哈希代码。

(继承自 Object)
JniManagedPeerState

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

(继承自 JavaObject)
JniPeerMembers

获取用于调用此Java对等方成员的 JNI 元数据。

PeerReference

获取此Java对等方的 JNI 对象引用。

(继承自 Object)
ThresholdClass

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

ThresholdType

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

方法

名称 说明
AddURI(String, String, Int32)

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

Clone()

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

(继承自 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

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

(继承自 JavaObject)
Dispose()

释放此Java对等方持有的资源。

(继承自 Object)
Dispose(Boolean)

释放此Java对等方持有的资源。

(继承自 Object)
DisposeUnlessReferenced()

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

(继承自 JavaObject)
Equals(Object)

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

(继承自 JavaObject)
Equals(Object)

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

(继承自 Object)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
JavaFinalize()
已过时.

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

(继承自 Object)
Match(Uri)

尝试与 URL 中的路径匹配。

Notify()

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

(继承自 Object)
NotifyAll()

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

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

设置 Handle 属性。

(继承自 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

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

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

从此Java数组包装器创建托管数组。

(继承自 Object)
ToString()

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

(继承自 Object)
UnregisterFromRuntime()

从互操作运行时取消注册此Java对等。

(继承自 Object)
Wait()

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

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

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

(继承自 Object)
Wait(Int64)

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

(继承自 Object)

显式接口实现

名称 说明
IJavaPeerable.Disposed()

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

(继承自 JavaObject)
IJavaPeerable.Finalized()

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

(继承自 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

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

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

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

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

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

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

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

(继承自 JavaObject)

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

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

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于