Uso de ativos do Android
Os ativos fornecem uma maneira de incluir arquivos arbitrários, como texto, xml, fontes, música e vídeo em seu aplicativo. Se você tentar incluir esses arquivos como "recursos", o Android os processará em seu sistema de recursos e você não poderá obter os dados brutos. Se você quiser acessar dados intocados, os ativos são uma maneira de fazer isso.
Os ativos adicionados ao seu projeto aparecerão exatamente como um sistema de arquivos que pode ser lido pelo aplicativo usando AssetManager.
Nesta demonstração simples, vamos adicionar um ativo de arquivo de texto ao nosso projeto, lê-lo usando AssetManager
e exibi-lo em um TextView.
Adicionar ativo ao projeto
Os ativos vão para a Assets
pasta do seu projeto. Adicione um novo arquivo de texto a esta pasta chamada read_asset.txt
. Coloque um texto nele como "Eu vim de um ativo!".
O Visual Studio deve ter definido a Ação de Build para este arquivo como AndroidAsset:
Selecionar o BuildAction correto garante que o arquivo seja empacotado no APK em tempo de compilação.
Lendo ativos
Os ativos são lidos usando um AssetManager. Uma instância do AssetManager
está disponível acessando a propriedade Assets em um Android.Content.Context
, como uma Atividade.
No código a seguir, abrimos nosso ativoread_asset.txt , lemos o conteúdo e o exibimos usando um TextView.
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Create a new TextView and set it as our view
TextView tv = new TextView (this);
// Read the contents of our asset
string content;
AssetManager assets = this.Assets;
using (StreamReader sr = new StreamReader (assets.Open ("read_asset.txt")))
{
content = sr.ReadToEnd ();
}
// Set TextView.Text to our asset content
tv.Text = content;
SetContentView (tv);
}
Lendo ativos binários
O uso de StreamReader
no exemplo acima é ideal para ativos de texto. Para ativos binários, use o seguinte código:
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Read the contents of our asset
const int maxReadSize = 256 * 1024;
byte[] content;
AssetManager assets = this.Assets;
using (BinaryReader br = new BinaryReader (assets.Open ("mydatabase.db")))
{
content = br.ReadBytes (maxReadSize);
}
// Do something with it...
}
Executando o aplicativo
Execute o aplicativo e você deverá ver o seguinte: