fbpx
Escolha uma Página

Para muitos desenvolvedores Android iniciantes o AndroidManifest é um grande mistério e no começo do aprendizado por ser um pouco confuso.

Para que serve? Como utilizar? E quando utilizar?

A questão é que este arquivo é mais importante do que você imagina para seu aplicativo Android. Ele contém informações extremamente úteis para o sistema operacional.

Agora, para desvendar os mistérios do AndroidManifest, continue comigo:

Introdução ao AndroidManifest

É obrigatório todo aplicativo Android ter um arquivo AndroidManifest.xml no diretório raiz do projeto.

O arquivo AndroidManifest é responsável por apresentar informações essenciais e importantes sobre o aplicativo ao sistema operacional Android.

Essas informações são utilizadas para o sistema operacional Android executar o aplicativo com suas devidas permissões e configurações.

Além disso, o AndroidManifest tem outras funções como:

  • Adicionar o nome do pacote ao aplicativo e usar como identificador exclusivo.
  • Configurar outros componentes do aplicativo como Activities, Services, Content Prodivers e etc.
  • Declarar as permissões que o aplicativo deve ter para funcionar corretamente no dispositivo do usuário.
  • Declarar o nível mínimo da Android API que o aplicativo exige para funcionar.

Estrutura do Arquivo

Incialmente a estrutura do AndroidManifest pode assustar um pouco, mas ela é muito simples de entender e trabalhar. Basicamente é um XML com diversas configurações.

O exemplo abaixo mostra a estrutura geral do arquivo AndroidManifest e cada elemento que ele pode conter.

<?xml version="1.0" encoding="utf-8"?>
<manifest>

    <uses-permission />
    <permission />
    <permission-tree />
    <permission-group />
    <instrumentation />
    <uses-sdk />
    <uses-configuration />  
    <uses-feature />  
    <supports-screens />  
    <compatible-screens />  
    <supports-gl-texture />  

    <application>

        <activity>
            <intent-filter>
                <action />
                <category />
                <data />
            </intent-filter>
            <meta-data />
        </activity>

        <activity-alias>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </activity-alias>

        <service>
            <intent-filter> . . . </intent-filter>
            <meta-data/>
        </service>

        <receiver>
            <intent-filter> . . . </intent-filter>
            <meta-data />
        </receiver>

        <provider>
            <grant-uri-permission />
            <meta-data />
            <path-permission />
        </provider>

        <uses-library />

    </application>

</manifest>

Esses são todos os elementos possíveis dentro de um AndroidManifest, e não é possível adicionar nenhum elemento extra.

Veja abaixo alguns elementos importantes em destaque.

<manifest>

O elemento principal <manifest> deve conter um elemento <application> e especificar de pacote e versão do aplicativo.

<application>

O elemento <application> contém subelementos que declaram cada um dos componentes do aplicativo e possui atributos que afetam todos os eles diretamente.

Muitos desses atributos servem como um valor padrão para os atributos correspondentes dos componentes.

<uses-permission>

O elemento <uses-permission> serve para configurar as permissões que o aplicativo deve receber para funcionar. As permissões são concedidas pelo usuário quando o aplicativo é instalado ou enquanto o aplicativo está em execução.

<activity>

O elemento <activity> especifica uma Activity.

Todas as Activities devem ser adicionadas no arquivo e qualquer Activity não declarada nesse arquivo não será encontrada pelo sistema e nunca será executada.

<service>

O elemento <service> especifica Service como um dos componentes do aplicativo.

Todos os Services devem ser adicionados por elementos <service> no arquivo e qualquer um que não seja declarado não será visto pelo sistema e nunca será executado.

<receiver>

O elemento <receiver> especifica um BroadcastReceiver como um dos componentes do aplicativo.

Existem duas maneiras de declarar o BroadcastReceiver: um é declarado no arquivo AndroidManifest com este elemento. O outro é criar o BroadcastReceiver dinamicamente no código e registrá-lo com o método Context.registerReceiver().

<provider>

O elemento <provider> especifica um ContentProdiver.

Todos os ContetProviders em seu aplicativo devem ser definidos em um elemento <provider> no arquivo, caso contrário, o sistema não tem conhecimento deles e não os executa.

Regras de Utilização

Existe um conjunto de regras para cada tipo de elemento e atributos que deve ser seguido ao configurar o AndroidManifest.

Elementos

São obritatórios os os elementos <manifest> e <application> dentro do arquivo AndroidManifest uma única vez. A maioria dos outros elementos podem ser adicionados várias vezes ou nenhuma.

Todos os valores dos elementos são definidos por meio de atributos.

Atributos

Quase todos os atributos dos elementos são opcionais. Porém, é preciso especificar alguns atributos para que um elemento funcione corretamente. Para atributos opcionais, ele declara um valor padrão.

Com execeção de alguns atributos do elemento <manifest>, todos os nomes de atributo começam com o prefixo android:.

Por exemplo: android:alwaysRetainTaskState.

Nomes de Classe

Em vários elementos é necessário configurar o nome da classe que será utilizada naquele componente.

Para definir a classe para componentes como Activity, Service, BroadcastReceiver e ContentProvider, utilize o atributo name.

<manifest package="br.com.androidpro.projeto" . . . >
    <application . . . >
        <service android:name=".MeuService" . . . >
            . . .
        </service>
        . . .
    </application>
</manifest>

Valores

Alguns atributos devem ser configurados de acordo com o tipo de elemento e atributo que estão sendo utilizados. Por exemplo, um filtro de Intent.

<intent-filter>
    <action android:name="android.intent.action.EDIT" />
    <action android:name="android.intent.action.INSERT" />
    <action android:name="android.intent.action.DELETE" />
</intent-filter>

Outros  atributos como um rótulo e um ícone de uma Activity podem ser configurados utilizando os valores em um resource.

<activity android:icon="@drawable/smallPic" . . . >

Gostou do conteúdo sobre AndroidManifest?

Então compartilhe esse artigo com seus amigos e qualquer dúvida deixe nos comentários aqui em baixo.

Leia também