Где хранится контент-провайдер в проекте Android? - PullRequest
0 голосов
/ 13 января 2011

Это может быть простой вопрос, но мне было трудно придумать прямой ответ.

Я создал поставщика контента в своем отдельном пакете в проекте с использованием Eclipse Android ADT. Этот пакет включен в исходный текст всего проекта. При изменении AndroidManifest.xml я включал это как дочерний элемент <application>:

 <provider android:name="JobProvider"
      android:authorities="dsndata.sds2Mobile.provider.JobProvider" />

Код, который будет использовать провайдер, находится в отдельном пакете также в src

Где лучше всего хранить провайдера? В той же упаковке, что и источник, использующий его? Кроме того, каковы правильные значения для Android: имя и Android: органы? Я уверен, что они различаются в зависимости от того, где хранится провайдер.

Ответы [ 2 ]

1 голос
/ 08 марта 2011

Вы можете разместить провайдера где угодно. Если вы пишете провайдера, который хранит данные для вашего приложения (и только для вашего приложения, и только ваше приложение использует его), то будет проще всего быть прямо с кодом приложения в его собственном пакете. Как правило, «провайдер» - это имя пакета.

Что касается названия и полномочий, см. Документацию манифеста :

android: имя Название класса который реализует контент-провайдера, подкласс ContentProvider. это должно быть полное имя класса (такие как, "Com.example.project.TransportationProvider"). Однако, как сокращение, если первый символ имени это точка, это добавляется к имени пакета указано в элементе. Там нет по умолчанию. Имя должно быть указано.

Android: власти Список из одного или другие органы URI, которые идентифицируют данные в соответствии с содержанием поставщик. Несколько органов власти перечислены путем разделения их имен с точка с запятой. Чтобы избежать конфликтов, имена властей должны использовать Соглашение об именах в стиле Java (например, com.example.provider.cartoonprovider). Как правило, это название Подкласс ContentProvider. Здесь нет дефолт. По крайней мере, один орган должен быть уточненным.

Права доступа к контенту - это уникальная строка, которая используется для отображения содержимого: // uris (uri to data) в ваш класс. ContentResolver использует это сопоставление, чтобы определить, как обслуживать данный запрос, который идентифицируется с помощью URI, правильному классу (вашему). Отсюда и требования к уникальной строке.

0 голосов
/ 01 августа 2013

вы можете хранить своего провайдера в любом месте вашего приложения. Это зависит от того, что ваше имя URI предоставляет в классе ContentProvider. Всегда помните, что использование имени URI в вашем приложении должно иметь уникальные права доступа и путь.

Android: имя - это имя класса вашего контент-провайдера с именем пакета и Android: полномочия - это имя вашего URI-содержимого, где доступен ваш провайдер. для получения дополнительной информации вы http://marakana.com/s/post/1375/android_content_provider_tutorial

...