Android ContentProvider Uri Matching - PullRequest
       6

Android ContentProvider Uri Matching

1 голос
/ 13 октября 2010

Я пытаюсь создать контент-провайдера, в котором ключ содержит косую черту "/". Я искал об этом довольно долго, но нет места / примера, иллюстрирующего это.

Содержание: //com.lily.provider/items/*

Общий пример, который я понимаю: содержание: //com.lily.provider/items/ab

Что я хочу сделать: мой ключ - строка с "/"
Содержание: //com.lily.provider/items/a/b где a / b - это идентификатор элемента, который находится в той же позиции, что и ab.

Мой вопрос:

  1. будет ли содержимое: //com.lily.provider/items/a/b сопоставлено с содержанием: //com.lily.provider/items/*? почему это?
  2. есть ли обходной путь, который я мог бы использовать для решения проблемы

1 Ответ

2 голосов
/ 14 октября 2010

Будет ли содержание: //com.lily.provider/items/a/b сопоставлено с содержанием: //com.lily.provider/items/*? почему это?

Да, это будет соответствовать. Звездочка * означает «соответствовать любому символу, включая косую черту».

Есть ли какой-нибудь обходной путь, который я мог бы использовать для решения проблемы

Если вы хотите сопоставить известные префиксы, вы можете просто добавить больше записей в ваш URI-сопоставитель (в следующем порядке):

  • content://com.lily.provider/items/a/*
  • content://com.lily.provider/items/b/*
  • content://com.lily.provider/items/*

Если вы настаиваете на наличии косых черт в данных, то вам следует косые черты URI-кодирования , которые не используются в качестве разделителей пути к %2f.

В противном случае, я не уверен, в чем проблема. URI "/items/a/b" будет соответствовать вашему исходному шаблону по желанию, а затем вы сможете проанализировать компонент пути URI по вашему желанию.

...