Android контент провайдер ВЛАСТЬ
В чем причина полномочий контент-провайдеров?
Как / почему я хочу использовать их, кроме Я, чтобы объявить их в манифесте?
Я попытался сделать свою домашнюю работу по этому вопросу и не могу найти достойного, связного обсуждения по этой теме. Вот лучшее, что я смог найти (в дополнение к четырем моим книгам по разработке Android):
- https://stackru.com/search?q=content+provider+authority
- Поставщики контента, полномочия и сопоставление URI
- Получить список доступных поставщиков контента
- http://developer.android.com/guide/topics/manifest/provider-element.html
- 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, чтобы обработать его соответствующим образом.
Кроме того, что, если вы, контент-провайдер, настолько упрощен, что другие тоже имеют схожие полномочия. Я не сталкивался с этими двумя проблемами, о которых упомянул, но думаю, это не будет приятным.
Администрация должна удостовериться, что ОС понимает, какой поставщик предоставит данные запрашивающему приложению, и убедиться, что поставщик предоставляет их.