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 AssetManagere 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:

Definindo a ação de build para 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:

Captura de tela de exemplo