Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.
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 autoridade com.example.project.healthcareprovider identifica o provedor. O sistema Android procura a autoridade na lista de provedores conhecidos e das autoridades deles. A substring nurses/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 argumento android: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 subclasse ContentProvider 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 atributo enabled 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. Defina android: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 elemento android: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ê definir android: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 atributo permission.

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 e exported: "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 FLAG_GRANT_READ_URI_PERMISSION e FLAG_GRANT_WRITE_URI_PERMISSION no objeto da intent que ativa o componente. Por exemplo, o aplicativo de e-mail pode colocar FLAG_GRANT_READ_URI_PERMISSION na intent transferida para Context.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 Context.revokeUriPermission() quando um URI coberto for excluído do provedor.

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 for false, 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 e grantUriPermissions têm precedência em relação a esse. Se o atributo readPermission também for definido, ele vai controlar o acesso para consultar o provedor de conteúdo. E se o atributo writePermission 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 atributo process, 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 como true, 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 e writePermission.

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 como true 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 e readPermission.

introduzido em:
Nível 1 da API
veja também:
Provedores de conteúdo