Na plataforma Android você pode usar o elemento
android
do descritor do aplicativo para adicionar informações ao manifesto do aplicativo do Android, que é um arquivo de propriedades do aplicativo usado pelo sistema operacional Android. O ADT gera automaticamente o arquivo Manifest.xml Android quando você cria o pacote APK. O AIR define algumas propriedades para os valores necessários para determinados recursos funcionarem. Outras propriedades definidas na seção android do descritor do aplicativo do AIR são adicionadas à seção correspondente do arquivo Manifest.xml.
Nota:
Para a maioria dos aplicativos AIR você deve definir as permissões do Android necessárias para seu aplicativo no elemento
android
, mas geralmente não precisa definir as outras propriedades.
Você só pode definir os atributos que aceitam valores boolianos, inteiros ou sequências de caracteres. Não está disponível a definição de referências para recursos do pacote de aplicativo.
Nota:
O tempo de execução requer uma versão mínima do SDK igual ou maior que 14. Se você deseja criar um aplicativo apenas para versões superiores, certifique-se de que o Manifesto inclui
<uses-sdk android:minSdkVersion=""></uses-sdk>
com a versão correta.
Configurações de manifesto Android reservadas
O AIR define várias entradas de manifesto no documento de manifesto Android gerado para garantir que os recursos de aplicação e runtime funcionem corretamente. Não é possível definir as configurações a seguir:
elemento de manifesto
Não é possível definir os seguintes atributos do elemento de manifesto:
-
package
-
android:versionCode
-
android:versionName
-
xmlns:android
elemento de atividade
Não é possível definir os seguintes atributos do elemento de atividade principal:
-
android:label
-
android:icon
elemento de aplicativo
Não é possível definir os seguintes atributos do elemento de aplicativo:
Permissões do Android
O modelo de segurança do Android exige que cada aplicativo peça autorização para utilizar recursos que tenham implicações de segurança ou privacidade. Essas permissões devem ser especificadas quando o aplicativo é compactado, e não podem ser alteradas em runtime. O sistema operacional Android informa ao usuário quais permissões um aplicativo solicita quando o usuário o instala. Se a permissão necessária para um recurso não for solicitada, o sistema operacional Android pode gerar uma exceção quando o aplicativos acessa o recurso, mas não é garantida uma exceção. Exceções são transmitidas pelo runtime ao seu aplicativo. No caso de falha silenciosa, uma mensagem de falha de permissão é adicionada ao log do sistema Android.
No AIR, você pode especificar as permissões do Android dentro do elemento
Android
do descritor do aplicativo. O formato a seguir é usado para adicionar as permissões (onde PERMISSION_NAME é o nome de uma permissão Android):
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.PERMISSION_NAME" />
</manifest>
]]>
</manifestAdditions>
</android>
As instruções de permissões por uso dentro do elemento
manifest
são adicionadas diretamente para o documento de manifesto do Android.
As permissões a seguir são obrigatórias para usar vários recursos AIR:
-
ACCESS_COARSE_LOCATION
-
Permite ao aplicativo acessar dados de local de rede WIFI e celular por meio da classe Geolocation.
-
ACCESS_FINE_LOCATION
-
Permite ao aplicativo acessar dados GPS por meio da classe Geolocation.
-
ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE
-
Permite ao aplicativo acessar informações de rede por meio da classe NetworkInfo.
-
CAMERA
-
Permite ao aplicativo acessar a câmera.
Nota:
Ao pedir permissão para usar o recurso de câmera, o Android assume que seu aplicativo também exige a câmera. Se a câmera for um recurso opcional do aplicativo, você deve adicionar um elemento
recurso por uso
para o manifesto para a câmera, definindo o atributo necessário para
false
. Consulte
Filtro de compatibilidade do Android
.
-
INTERNET
-
Permite ao aplicativo fazer solicitações de rede, além de permitir a depuração remota.
-
READ_PHONE_STATE
-
Permite ao runtime do AIR silenciar o áudio durante as chamadas telefônicas. Você deve definir essa permissão se o aplicativo reproduzir áudio em plano de fundo.
-
RECORD_AUDIO
-
Permite ao aplicativo acessar o microfone.
-
WAKE_LOCK e DISABLE_KEYGUARD
-
Permite ao aplicativo impedir que o dispositivo entre no modo de suspensão por meio do uso das configurações da classe SystemIdleMode.
-
WRITE_EXTERNAL_STORAGE
-
Permite ao aplicativo gravar no cartão de memória externo no dispositivo.
Por exemplo, para definir as permissões para um aplicativo que exige cada permissão de maneira impressionante, você pode adicionar o seguinte para o descritor de aplicativo:
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>
]]>
</manifestAdditions>
</android>
Esquemas URI personalizados do Android
Você pode usar um esquema URI personalizado para ativar um aplicativo do AIR de uma página web ou um aplicativo Android nativo. O suporte URI personalizado depende de filtros de método especificados no manifesto do Android, por isso esta técnica não pode ser usada em outras plataformas.
Para usar um URI personalizado, adicione um filtro com método para o descritor do aplicativo no bloco
<android>
. Os elementos
intent-filter
no exemplo a seguir devem ser especificados. Edite a instrução
<data android:scheme="
my-customuri
"/>
para refletir a sequência de caracteres URI para o seu esquema personalizado.
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<application>
<activity>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.BROWSABLE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="my-customuri"/>
</intent-filter>
</activity>
</application>
</manifest>
]]>
</manifestAdditions>
</android>
O filtro com método informa o sistema operacional Android que seu aplicativo está disponível para executar uma determinada ação. No caso de um URI personalizado, isto significa que o usuário clicou em um link usando esse esquema de URI (e o navegador não sabe como lidar com isso).
Quando o aplicativo é invocado através de um URI personalizado, o objeto NativeApplication envia um evento
invoke
. A URL do link, incluindo parâmetros de consulta, é colocada no array
arguments
do objeto InvokeEvent. Você pode usar qualquer número de filtros com método.
Nota:
Links em uma instância StageWebView não podem abrir URLs que usam um esquema de URI customizado.
Filtro de compatibilidade do Android
O sistema operacional Android usa um número de elementos no arquivo de manifesto do aplicativo para determinar se o aplicativo é compatível com um determinado dispositivo. A inclusão desta informação ao manifesto é opcional. Se você não incluir esses elementos, o aplicativo pode ser instalado em qualquer dispositivo com Android. No entanto, ele pode não funcionar corretamente em qualquer dispositivo com Android. Por exemplo, um aplicativo de câmera não vai ser muito útil em um telefone que não tenha câmera.
As marcas do manifesto do Android que você pode usar para filtrar incluem:
Aplicativos de câmera
Se você pedir a permissão da câmera para seu aplicativo, o Android assume que o aplicativo exige que todos os recursos da câmera estejam disponíveis, incluindo foco automático e flash. Se seu aplicativo não exige que todos os recursos da câmera, ou se a câmera é um recurso opcional, você deve definir os vários elementos
uses-feature
para a câmera para indicar que estes são opcionais. Caso contrário, usuários com dispositivos que estão faltando um recurso ou que não tenham uma câmera não poderá encontrar o seu aplicativo na Android Market.
O exemplo a seguir ilustra como solicitar permissão para a câmera e tornar todos os recursos desta opcionais:
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.flash" android:required="false"/>
</manifest>
]]>
</manifestAdditions>
</android>
Aplicativos de gravação de áudio
Se você pedir a permissão para gravar o áudio, o Android também assume que o aplicativo requer um microfone. Se a gravação de áudio for um recurso opcional do seu aplicativo, você pode adicionar uma marca uses-feature para especificar que o microfone não é necessário. Caso contrário, usuários com dispositivos que não têm um microfone não poderão encontrar seu aplicativo na Android Market.
O exemplo a seguir ilustra como solicitar permissão para usar o microfone, enquanto ainda está tornando o hardware do microfone opcional:
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.microphone" android:required="false"/>
</manifest>
]]>
</manifestAdditions>
</android>
Local de instalação
Você pode permitir que seu aplicativo seja instalado ou transferido para o cartão de memória externo, definindo o atributo
installLocation
do elemento
manifest
do Android para
auto
ou
preferExternal
:
<android>
<manifestAdditions>
<![CDATA[
<manifest android:installLocation="preferExternal"/>
]]>
</manifestAdditions>
</android>
O sistema operacional Android não garante que seu aplicativo será instalado para a memória externa. Um usuário pode também mover o aplicativo entre memória interna e externa utilizando aplicativo de configurações do sistema.
Mesmo quando instalado para memória externa, cache de aplicativos e dados do usuário (como o conteúdo do diretório de armazenamento do aplicativo, objetos compartilhados e arquivos temporários) ainda estão armazenados na memória interna. Para evitar o uso de muita memória interna, seja seletivo sobre os dados que você salvar para o diretório de armazenamento do aplicativo. Grandes quantidades de dados devem ser salvos no SDCard usando os locais
File.userDirectory
ou
File.documentsDirectory
(ambos mapeiam para a raiz do cartão SD no Android).
Ativar Flash Player e outros plug-ins em um objeto de StageWebView
No Android 3.0+, um aplicativo deve habilitar a aceleração de hardware no elemento do aplicativo Android para que o conteúdo do plug-in seja exibido num objeto StageWebView. Para ativar a renderização de plug-in, defina o atributo
android:hardwareAccelerated
do elemento
application
como
true
:
<android>
<manifestAdditions>
<![CDATA[
<manifest>
<application android:hardwareAccelerated="true"/>
</manifest>
]]>
</manifestAdditions>
</android>
Profundidade de cores
No AIR 3 e em versões posteriores, o runtime define a exibição para renderizar cores de 32 bits. Nas versões anteriores do AIR, o runtime usa a cor de 16 bits. Você pode informar o runtime para usar a cor de 16 bits usando o elemento <colorDepth> do descritor de aplicativo:
<android>
<colorDepth>16bit</colorDepth>
<manifestAdditions>...</manifestAdditions>
</android>
A utilização da profundidade de cor de 16 bits pode aumentar o desempenho de renderização, mas em detrimento da fidelidade de cor.
|
|
|