- синтаксис:
<provider android:authorities="list" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:exported=["true" | "false"] android:grantUriPermissions=["true" | "false"] android:icon="drawable resource" android:initOrder="integer" android:label="string resource" android:multiprocess=["true" | "false"] android:name="string" android:permission="string" android:process="string" android:readPermission="string" android:syncable=["true" | "false"] android:writePermission="string" > ... </provider>
- содержится в:
-
<application> - может содержать:
-
<meta-data>
<grant-uri-permission>
<intent-filter>
<path-permission>
<property> - описание:
- Объявляет компонент поставщика контента. Поставщик контента — это подкласс
ContentProvider, который обеспечивает структурированный доступ к данным, управляемым приложением. Все поставщики контента в вашем приложении должны быть определены в элементе<provider>в файле манифеста. В противном случае система не будет о них знать и не будет их запускать.Указывайте только те поставщики контента, которые являются частью вашего приложения. Не указывайте поставщиков контента из других приложений, которые вы используете в своем приложении.
Система Android хранит ссылки на поставщиков контента в соответствии со строкой авторизации , являющейся частью URI контента поставщика. Например, предположим, вы хотите получить доступ к поставщику контента, который хранит информацию о медицинских работниках. Для этого вы вызываете метод
ContentResolver.query(), который принимает URI, идентифицирующий поставщика, а также другие аргументы:content://com.example.project.healthcareprovider/nurses/rn
Схема
content:идентифицирует URI как URI контента, указывающий на поставщика контента Android. Полномочияcom.example.project.healthcareproviderидентифицируют самого поставщика. Система Android ищет эти полномочия в своем списке известных поставщиков и их полномочий. Подстрокаnurses/rnпредставляет собой путь , который поставщик контента использует для идентификации подмножеств данных поставщика.При определении поставщика в элементе
<provider>вы не включаете схему или путь в аргументandroid:name, только полномочия.Для получения информации об использовании и разработке поставщиков контента см. раздел «Поставщики контента» .
- атрибуты:
-
android:authorities - Список из одного или нескольких URI-авторитетов, идентифицирующих данные, предоставляемые поставщиком контента. Для разделения имен нескольких авторитетных источников используйте точку с запятой. Во избежание конфликтов используйте соглашение об именовании авторитетных источников в стиле Java, например,
com.example.provider.cartoonprovider. Как правило, это имя подклассаContentProvider, реализующего данный поставщик.Параметры по умолчанию отсутствуют. Необходимо указать как минимум один орган власти.
-
android:enabled - Указывает, может ли система создать экземпляр поставщика контента. Если может, принимает значение
"false""true", если нет. Значение по умолчанию —"true".Элемент
<application>имеет собственный атрибутenabled, который применяется ко всем компонентам приложения, включая поставщиков контента. Для включения поставщика контента атрибуты<application>и<provider>должны быть равны"true", как и по умолчанию. Если хотя бы один из них равен"false", поставщик отключен. Его нельзя создать. -
android:directBootAware Поддерживает ли поставщик контента технологию Direct-Boot — то есть, может ли он запускаться до того, как пользователь разблокирует устройство.
Примечание: Во время прямой загрузки поставщик контента в вашем приложении может получить доступ только к данным, хранящимся в защищенном хранилище устройства .
Значение по умолчанию —
"false".-
android:exported - Доступен ли данный поставщик контента для использования другими приложениями.
-
"true": поставщик доступен для других приложений. Любое приложение может использовать URI контента поставщика для доступа к нему, с учетом разрешений, указанных для поставщика. -
"false": поставщик недоступен для других приложений. Установитеandroid:exported="false", чтобы ограничить доступ к поставщику только для ваших приложений. Доступ к нему будут иметь только приложения, имеющие тот же идентификатор пользователя (UID), что и поставщик, или приложения, которым временно предоставлен доступ к поставщику через элементandroid:grantUriPermissions.
Поскольку этот атрибут был введен в API уровня 17, все устройства, работающие под управлением API уровня 16 и ниже, ведут себя так, как если бы этот атрибут был установлен в значение
"true". Если вы установитеandroid:targetSdkVersionравным 17 или выше, то значение по умолчанию будет"false"для устройств, работающих под управлением API уровня 17 и выше.Вы можете установить
android:exported="false"и при этом ограничить доступ к вашему провайдеру, задав разрешения с помощью атрибутаpermission. -
-
android:grantUriPermissions - Можно ли предоставить разрешение тем, кто обычно не имеет доступа к данным поставщика контента, временно обойти ограничения, налагаемые атрибутами
readPermission,writePermission,permissionиexported.Значение
"true"означает, что разрешение может быть предоставлено, а"false"— что нет. Если"true", разрешение может быть предоставлено для любых данных поставщика контента. Если"false", разрешение может быть предоставлено только для подмножеств данных, перечисленных в подэлементах<grant-uri-permission>, если таковые имеются. Значение по умолчанию —"false".Предоставление разрешения — это способ предоставления компоненту приложения одноразового доступа к данным, защищенным разрешением. Например, если электронное письмо содержит вложение, почтовое приложение может запросить у соответствующего пользователя возможность открыть его, даже если у этого пользователя нет общего разрешения на просмотр всех данных поставщика контента.
В таких случаях разрешение предоставляется с помощью флагов
FLAG_GRANT_READ_URI_PERMISSIONиFLAG_GRANT_WRITE_URI_PERMISSIONв объектеIntent, который активирует компонент. Например, почтовое приложение может добавить флагFLAG_GRANT_READ_URI_PERMISSIONв объектIntent, передаваемый вContext.startActivity(). Разрешение привязано к URI вIntent.Если вы включите эту функцию, установив для этого атрибута значение
"true"или определив подэлементы<grant-uri-permission>, вызовитеContext.revokeUriPermission()при удалении защищенного URI из поставщика.См. также элемент
<grant-uri-permission>. -
android:icon - Значок, представляющий поставщика контента. Этот атрибут устанавливается как ссылка на ресурс drawable, содержащий определение изображения. Если он не установлен, вместо него используется значок, указанный для всего приложения. Для получения дополнительной информации см. атрибут
iconэлемента<application>. -
android:initOrder - Порядок создания экземпляров поставщика контента относительно других поставщиков контента, размещенных в том же процессе. При наличии зависимостей между поставщиками контента установка этого атрибута для каждого из них гарантирует, что они будут созданы в порядке, требуемом этими зависимостями. Значение является целым числом, причем более высокие числа инициализируются первыми.
-
android:label - Удобочитаемая пользователем метка для предоставленного контента. Если этот атрибут не задан, используется метка, заданная для всего приложения. Для получения дополнительной информации см. атрибут
labelэлемента<application>.Метка обычно задается как ссылка на строковый ресурс, чтобы ее можно было локализовать так же, как и другие строки в пользовательском интерфейсе. Однако для удобства при разработке приложения ее также можно задать в виде необработанной строки.
-
android:multiprocess - Если приложение работает в нескольких процессах, этот атрибут определяет, создаются ли несколько экземпляров поставщика контента. Если
"true", каждый процесс приложения имеет свой собственный объект поставщика контента. Если"false", процессы приложения используют только один общий объект поставщика контента. Значение по умолчанию -"false".Установка этого флага в значение
"true"может повысить производительность за счет уменьшения накладных расходов на межпроцессное взаимодействие, но при этом увеличивает объем памяти, занимаемый каждым процессом. -
android:name - Имя класса, реализующего поставщик контента, являющегося подклассом
ContentProvider. Обычно это полное имя класса, например,"com.example.project.TransportationProvider". Однако, в качестве сокращения, если первый символ имени — точка, она добавляется к имени пакета, указанному в элементе<manifest>.Значений по умолчанию нет. Необходимо указать имя.
-
android:permission - Название разрешения, которое клиенты должны иметь для чтения или записи данных поставщика контента. Этот атрибут представляет собой удобный способ установки единого разрешения как для чтения, так и для записи. Однако атрибуты
readPermission,writePermissionиgrantUriPermissionsимеют приоритет над этим.Если также задан атрибут
readPermission, он контролирует доступ к запросам к поставщику контента. Если задан атрибутwritePermission, он контролирует доступ к изменению данных поставщика.Для получения дополнительной информации о разрешениях см. раздел «Разрешения» в обзоре манифеста приложения и советы по безопасности .
-
android:process - Имя процесса, в котором работает поставщик контента. Обычно все компоненты приложения работают в процессе по умолчанию, созданном для этого приложения. Он имеет то же имя, что и пакет приложения.
Атрибут
processэлемента<application>может устанавливать разные значения по умолчанию для всех компонентов. Однако каждый компонент может переопределить значение по умолчанию с помощью своего собственного атрибутаprocess, что позволяет распределить приложение по нескольким процессам.Если имя, присвоенное этому атрибуту, начинается с двоеточия (
:), то при необходимости создается новый процесс, являющийся частным для приложения, и действие выполняется в этом процессе.Если имя процесса начинается с маленькой буквы, то действие выполняется в глобальном процессе с этим именем, при условии, что у него есть на это разрешение. Это позволяет компонентам в разных приложениях совместно использовать один процесс, снижая потребление ресурсов.
-
android:readPermission Разрешение, которым должны обладать клиенты для отправки запросов поставщику контента.
Если поставщик устанавливает
android:grantUriPermissionsв"true"или если данный клиент удовлетворяет условиям подэлемента<grant-uri-permission>, клиент может получить временный доступ на чтение к данным поставщика контента.См. также атрибуты
permissionиwritePermission.-
android:syncable - Возможность синхронизации данных, находящихся под контролем поставщика контента, с данными на сервере. Если это возможно, ответ
"true", если нет"false". -
android:writePermission Разрешение, необходимое клиентам для внесения изменений в данные, контролируемые поставщиком контента.
Если поставщик устанавливает
android:grantUriPermissionsв"true"или если данный клиент удовлетворяет условиям подэлемента<grant-uri-permission>, клиент может получить временный доступ на запись для изменения данных поставщика контента.См. также атрибуты
permissionиreadPermission.
-
- введено в:
- Уровень API 1
- См. также:
- Поставщики контента
<поставщик>
Контент и образцы кода на этой странице предоставлены по лицензиям. Java и OpenJDK – это зарегистрированные товарные знаки корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2026-07-01 UTC.
[[["Прост для понимания","easyToUnderstand","thumb-up"],["Помог мне решить мою проблему","solvedMyProblem","thumb-up"],["Другое","otherUp","thumb-up"]],[["Отсутствует нужная мне информация","missingTheInformationINeed","thumb-down"],["Слишком сложен/слишком много шагов","tooComplicatedTooManySteps","thumb-down"],["Устарел","outOfDate","thumb-down"],["Проблема с переводом текста","translationIssue","thumb-down"],["Проблемы образцов/кода","samplesCodeIssue","thumb-down"],["Другое","otherDown","thumb-down"]],["Последнее обновление: 2026-07-01 UTC."],[],[]]