Uso de recursos de Android
Los recursos proporcionan una manera de incluir archivos arbitrarios como texto, xml, fuentes, música y vídeo en la aplicación. Si intenta incluir estos archivos como "recursos", Android los procesará en su sistema de recursos y no podrá obtener los datos sin procesar. Si desea acceder a los datos sin modificar, los recursos son una manera de hacerlo.
Los recursos agregados al proyecto se mostrarán igual que un sistema de archivos que la aplicación puede leer mediante AssetManager.
En esta demostración sencilla, vamos a agregar un recurso de archivo de texto a nuestro proyecto, leerlo mediante AssetManager
, y mostrarlo en un TextView.
Agregar recurso a Project
Los recursos se van en la Assets
carpeta del proyecto. Agregue un nuevo archivo de texto a esta carpeta denominada read_asset.txt
. Coloque algún texto en él como "¡He venido de un recurso!".
Visual Studio debe haber establecido la acción de compilación de este archivo en AndroidAsset:
Al seleccionar el BuildAction correcto, se garantiza que el archivo se empaquetará en el APK en tiempo de compilación.
Leer recursos
Los recursos se leen mediante AssetManager. Una instancia de AssetManager
está disponible accediendo a la propiedad Assets en, Android.Content.Context
como una actividad.
En el código siguiente, abrimos nuestro recurso de read_asset.txt, leemos el contenido y lo mostramos mediante 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);
}
Leer recursos binarios
El uso de StreamReader
en el ejemplo anterior es ideal para los recursos de texto. En el caso de los recursos binarios, use el código siguiente:
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...
}
Ejecutar la aplicación
Ejecute la aplicación y debería ver lo siguiente: