- sintaxe:
-
<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>
- contido em:
-
<application>
- pode conter:
<meta-data>
<grant-uri-permission>
<intent-filter>
<path-permission>
- descrição:
-
Declara o componente de um provedor de conteúdo. Um provedor de conteúdo é uma subclasse do
ContentProvider
que oferece acesso estruturado aos dados gerenciados pelo aplicativo. Todos os provedores de conteúdo do seu aplicativo precisam ser definidos em um elemento<provider>
no arquivo de manifesto. Caso contrário, eles não são detectados nem executados pelo sistema.Declare somente os provedores de conteúdo que fazem parte do seu aplicativo. Não declare os provedores de conteúdo de outros aplicativos que você usa no seu.
O sistema Android armazena referências a provedores de conteúdo de acordo com uma string de autoridade, que faz parte do URI de conteúdo do provedor. Por exemplo, suponha que você queira acessar um provedor de conteúdo que armazena informações sobre profissionais de saúde. Para fazer isso, chame o método
ContentResolver.query()
, que, entre outros argumentos, usa um URI que identifica o provedor:content://com.example.project.healthcareprovider/nurses/rn
O esquema
content:
identifica o URI como um URI de conteúdo que aponta para um provedor de conteúdo do Android. A autoridadecom.example.project.healthcareprovider
identifica o provedor. O sistema Android procura a autoridade na lista de provedores conhecidos e das autoridades deles. A substringnurses/rn
é um caminho, que o provedor de conteúdo pode usar para identificar subconjuntos dos dados do provedor.Observe que ao definir seu provedor no elemento
<provider>
, você não inclui o esquema nem o caminho no argumentoandroid:name
, apenas a autoridade.Para informações sobre como usar e desenvolver provedores de conteúdo, consulte o guia da API, Provedores de conteúdo.
- atributos:
-
android:authorities
-
Lista de uma ou mais autoridades de URI que identificam dados oferecidos pelo provedor de conteúdo.
Várias autoridades são listadas com os nomes separados por ponto e vírgula.
Para evitar conflitos, os nomes de autoridade precisam usar uma convenção de nomeação
no estilo Java, como
com.example.provider.cartoonprovider
. Normalmente, é o nome da subclasseContentProvider
que implementa o provedor.Não há padrão. Pelo menos uma autoridade precisa ser especificada.
android:enabled
- Se o provedor de conteúdo pode ou não ser instanciado pelo sistema:
"
true
" se puder, e "false
" se não. O valor padrão é "true
".O elemento
<application>
tem o próprio atributoenabled
que se aplica a todos os componentes do aplicativo, incluindo provedores de conteúdo. Tanto o atributo<application>
quanto o<provider>
precisam ser "true
" (ambos são por padrão) para que o provedor de conteúdo seja ativado. Se um dos dois é "false
", o provedor é desativado e não pode ser instanciado. android:directBootAware
Se o provedor de conteúdo tem ou não reconhecimento da inicialização direta, ou seja, se ele pode ou não ser executado antes de o usuário desbloquear o dispositivo.
Observação: durante a inicialização direta, um provedor de conteúdo no seu aplicativo só pode acessar os dados no armazenamento protegido do dispositivo.
O valor padrão é
"false"
.android:exported
-
Se o provedor de conteúdo está ou não disponível para outros aplicativos usarem:
-
true
: o provedor está disponível para outros aplicativos. Qualquer aplicativo pode usar o URI de conteúdo do provedor para o acessar, de acorco com as permissões especificadas para esse provedor. -
false
: o provedor não está disponível para outros aplicativos. Definaandroid:exported="false"
para limitar o acesso do provedor aos seus aplicativos. Apenas aplicativos que têm o mesmo ID do usuário do provedor ou aplicativos que receberam acesso temporário ao provedor usando o elementoandroid:grantUriPermissions
têm acesso a ele.
Como esse atributo foi introduzido na API de nível 17, todos os dispositivos que executam a API de nível 16 e anteriores se comportam como se esse atributo estivesse definido como
"true"
. Se você definirandroid:targetSdkVersion
como 17 ou mais recente, o valor padrão vai ser"false"
para dispositivos com API de nível 17 ou mais recente.Você pode definir
android:exported="false"
e ainda limitar o acesso ao provedor, configurando permissões com o atributopermission
. -
android:grantUriPermissions
- Se aqueles que originalmente não teriam permissão para
acessar os dados do provedor de conteúdo vão receber ou não permissão para isso,
superando temporariamente a restrição imposta pelos
atributos
readPermission
,writePermission
,permission
eexported
: "true
" se a permissão puder ser concedida, e "false
" se não puder. Se for "true
", a permissão vai poder ser concedida a qualquer dado do provedor de conteúdo. Se for "false
", a permissão só vai poder ser concedida aos subconjuntos de dados listados nos subelementos<grant-uri-permission>
, se houver. O valor padrão é "false
".A permissão é uma forma de conceder ao componente do aplicativo um acesso único aos dados protegidos por uma permissão. Por exemplo, quando um e-mail contém um anexo, o aplicativo de e-mail pode chamar o visualizador adequado para abri-lo, mesmo que o visualizador não tenha permissão geral para analisar todos os dados do provedor de conteúdo.
Nesses casos, a permissão é concedida pelas sinalizações
eFLAG_GRANT_READ_URI_PERMISSION
no objeto da intent que ativa o componente. Por exemplo, o aplicativo de e-mail pode colocarFLAG_GRANT_WRITE_URI_PERMISSION
FLAG_GRANT_READ_URI_PERMISSION
na intent transferida paraContext.startActivity()
. A permissão é específica para o URI da intent.Se você ativar esse recurso, definindo esse atributo como “
true
” ou definindo subelementos<grant-uri-permission>
, chame
quando um URI coberto for excluído do provedor.Context.revokeUriPermission()
Consulte também o elemento
<grant-uri-permission>
. android:icon
- Um ícone que representa o provedor de conteúdo.
Esse atributo precisa ser definido como uma referência a um recurso drawable que contém
a definição de imagem. Se ele não for definido, o ícone especificado para o aplicativo como um todo vai ser usado. Consulte o atributo
icon
do elemento<application>
. android:initOrder
- Ordem na qual o provedor de conteúdo é instanciado, em relação a outros provedores de conteúdo hospedados pelo mesmo processo. Quando há dependências entre os provedores de conteúdo, definir esse atributo para cada um deles garante que eles sejam criados na ordem exigida por essas dependências. O valor é um número inteiro simples, com números mais altos sendo inicializados primeiro.
android:label
- Rótulo legível pelo usuário para o conteúdo fornecido.
Se esse atributo não estiver definido, o rótulo definido para o aplicativo como um todo vai ser
usado. Consulte o atributo
label
do elemento<application>
.O rótulo precisa ser definido como referência a um recurso de string para que possa ser localizado como outras strings da interface do usuário. No entanto, para facilitar o desenvolvimento do aplicativo, ele também pode ser definido como uma string bruta.
android:multiprocess
- Se o app é executado em vários processos, esse atributo determina se
várias instâncias do provedor de conteúdo vão ser criadas. Se for
true
, cada processo do app vai ter o próprio objeto de provedor de conteúdo. Se forfalse
, os processos do app vão compartilhar apenas um objeto do provedor de conteúdo. O valor padrão éfalse
.Definir essa sinalização como
true
pode melhorar o desempenho e reduzir a sobrecarga da comunicação entre processos, mas também aumenta o consumo de memória de cada processo. android:name
- O nome da classe que implementa o provedor de conteúdo, uma subclasse de
ContentProvider
. Precisa ser um nome de classe totalmente qualificado, como "com.example.project.TransportationProvider
". No entanto, como abreviação, se o primeiro caractere do nome for um ponto, ele vai ser anexado ao nome do pacote especificado no elemento<manifest>
.Não há padrão. O nome precisa ser especificado.
android:permission
- O nome de uma permissão que os clientes precisam ter para ler ou gravar os
dados do provedor de conteúdo. Esse atributo é uma maneira conveniente de definir
uma única permissão para leitura e gravação. No entanto, os
atributos
readPermission
,writePermission
egrantUriPermissions
têm precedência em relação a esse. Se o atributoreadPermission
também for definido, ele vai controlar o acesso para consultar o provedor de conteúdo. E se o atributowritePermission
for definido, ele vai controlar o acesso para modificar os dados do provedor.Para mais informações sobre permissões, consulte a seção Permissões na introdução e outro documento, chamado Segurança e permissões.
android:process
- O nome do processo em que o provedor de conteúdo vai ser executado. Normalmente,
todos os componentes de um aplicativo são executados no processo padrão criado para
ele. Ele tem o mesmo nome do pacote do aplicativo. O
atributo
process
do elemento<application>
pode definir um padrão diferente para todos os componentes. Mas cada componente pode modificar o padrão com o próprio atributoprocess
, permitindo que você distribua seu aplicativo em vários processos.Se o nome atribuído a esse atributo começa com dois-pontos (":"), um novo processo, particular para o aplicativo, é criado quando necessário e a atividade é executada nesse processo. Se o nome do processo começa com um caractere minúsculo, a atividade é executada em um processo global com esse nome, desde que tenha permissão. Isso permite que os componentes de diferentes aplicativos compartilhem um processo, reduzindo o uso de recursos.
android:readPermission
Permissão que os clientes precisam ter para consultar o provedor de conteúdo.
Se o provedor definir
android:grantUriPermissions
comotrue
, ou se um determinado cliente satisfizer as condições de um subelemento<grant-uri-permission>
, o cliente vai poder ter acesso de leitura temporário aos dados do provedor de conteúdo.Consulte também os atributos
permission
ewritePermission
.android:syncable
- Se os dados sob o controle do provedor de conteúdo
vão ou não ser sincronizados com os dados em um servidor. "
true
" se forem sincronizados, e "false
" se não. android:writePermission
Permissão que os clientes precisam ter para fazer mudanças nos dados controlados pelo provedor de conteúdo.
Se o provedor definir
android:grantUriPermissions
comotrue
ou se determinado cliente satisfizer as condições de um subelemento<grant-uri-permission>
, o cliente vai poder ter acesso de gravação temporário aos dados do provedor de conteúdo.Consulte também os atributos
permission
ereadPermission
.
- introduzido em:
- Nível 1 da API
- veja também:
- Provedores de conteúdo
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2022-09-13 UTC.
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"Não contém as informações de que eu preciso"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"Muito complicado / etapas demais"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"Desatualizado"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"Problema na tradução"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"Problema com as amostras / o código"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"Outro"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"Fácil de entender"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"Meu problema foi resolvido"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"Outro"
}]