Android контент провайдер ВЛАСТЬ

В чем причина полномочий контент-провайдеров?

Как / почему я хочу использовать их, кроме Я, чтобы объявить их в манифесте?

Я попытался сделать свою домашнюю работу по этому вопросу и не могу найти достойного, связного обсуждения по этой теме. Вот лучшее, что я смог найти (в дополнение к четырем моим книгам по разработке Android):

  1. https://stackru.com/search?q=content+provider+authority
  2. Поставщики контента, полномочия и сопоставление URI
  3. Получить список доступных поставщиков контента
  4. http://developer.android.com/guide/topics/manifest/provider-element.html
  5. http://developer.android.com/guide/topics/providers/content-provider-creating.html

2 ответа

Решение

Управление используется для взаимодействия с конкретным поставщиком контента, это означает, что он должен быть уникальным. Вот почему рекомендуется объявлять его как имя вашего домена (в обратном порядке) и имя пакета, содержащего провайдера, поэтому менее вероятно, что другой разработчик создаст приложение с провайдером контента, объявляющим те же полномочия.

Вы объявляете это в манифесте, чтобы ваше приложение и другие приложения (если вы позволяете им) могли манипулировать данными через вашего контент-провайдера в форме URI:

content://authority-name/data-in-the-provider

Он работает аналогично доменам в http URL:

http://domain-name/data-in-the-site

Я также ищу объяснения и добавляю к ответу, предоставленному ILovemyPoncho, я нажимаю на этот конкретный ответ и цитирую:

а что именно андроид: власти просят?

Общесистемный уникальный идентификатор вашего провайдера. Или лучше во всем мире уникальным. Все поставщики зарегистрированы в системе, и они должны быть уникальными, иначе второе приложение, которое хочет использовать то же имя, не может быть установлено.

Вы используете эту строку в конце для связи с вашим провайдером через Uri, например

Uri uri = Uri.parse("content://" + "your.authoritiy.string")

Скажем так: есть невидимая рука, которая облегчает ваш запрос к ContentProvider вашего приложения.

Например:

    Uri uri = mContext.getContentResolver().insert(NotifireContentProvider2.NOTE_URI, values);

По сути, то, что вы говорите здесь для ОС Android, - это вставка данных с учетом URI, содержащего полномочия, которые вы определили в XML. ОС будет искать этого конкретного поставщика контента и отправлять запрос к нему. Вы insert Метод ContentProvider будет вызван, и вы должны соответствовать URI, чтобы обработать его соответствующим образом.

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

Администрация должна удостовериться, что ОС понимает, какой поставщик предоставит данные запрашивающему приложению, и убедиться, что поставщик предоставляет их.

Другие вопросы по тегам