- синтаксис:
<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> - описание:
- Объявляет компонент поставщика контента. Поставщик контента — это подкласс
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 - Может ли система создать экземпляр поставщика контента. Это
"true"если это возможно, и"false"если нет. Значение по умолчанию —"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 - Значок, представляющий поставщика контента. Этот атрибут устанавливается как ссылка на ресурс, который можно использовать для рисования, содержащий определение изображения. Если он не установлен, вместо него используется значок, указанный для приложения в целом. Дополнительные сведения см. в атрибуте
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,writePermissiongrantUriPermissionsимеют приоритет над этим.Если также установлен атрибут
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 и ее аффилированных лиц.
Последнее обновление: 2025-07-29 UTC.
[null,null,["Последнее обновление: 2025-07-29 UTC."],[],[]]