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

Начиная с уровня android.os.Build.VERSION_CODES#JELLY_BEAN_MR2API пути могут начинаться с начальной косой черты. Пример:

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.

Части этой страницы являются изменениями, основанными на работе, созданной и совместно используемой проектом Android и используемой в соответствии с условиями, Creative Commons 2.5 Attribution License.

Конструкторы

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 для Android и не предназначен для использования непосредственно из кода.

ThresholdType

Этот API поддерживает инфраструктуру Mono для 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()

Вызывает ожидание текущего потока, пока он не пробудится, как правило, из-за <уведомления><<> или>прерывания или прерывания.><

(Унаследовано от Object)
Wait(Int64)

Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени.

(Унаследовано от Object)
Wait(Int64, Int32)

Вызывает ожидание текущего потока, пока он не пробудится, как правило, путем <уведомления><<> или>прерывания или прерывания<> или до истечения определенного количества реального времени.

(Унаследовано от 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 в поставщиках содержимого.

Применяется к