使用 Android 资产
资产提供了一种在应用程序中包括任意文件(例如文本、xml、字体、音乐和视频)的方法。 如果你尝试将这些文件包括为“资源”,则 Android 会将这些文件处理到其资源系统中,并且你无法获取原始数据。 如果你想访问原封未动的数据,则可使用“资产”来实现此目的。
添加到项目中的资产就像文件系统一样显示,你的应用程序可以使用 AssetManager 读取其中的数据。
在此简单演示中,我们将向项目中添加文本文件资产,使用 AssetManager
读取它,并在 TextView 中显示它。
向项目中添加资产
资产将进入你的项目的 Assets
文件夹中。 将一个名为 read_asset.txt
的新文本文件添加到此文件夹。 将一些文本放在该文件中,例如“我来自资产!”
Visual Studio 应当已将此文件的“生成操作”设置为“AndroidAsset”:
选择正确的“生成操作”可确保在编译时将文件打包为 APK。
读取资产
资产是使用 AssetManager 读取的。 可通过访问 Android.Content.Context
(例如 Activity)上的 Assets 属性来获取 AssetManager
的实例。
在下面的代码中,我们将打开 read_asset.txt 资产,读取内容,并使用 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);
}
读取二进制资产
以上示例中的 StreamReader
用法非常适合文本资产。 对于二进制资产,请使用以下代码:
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...
}
运行应用程序
运行该应用程序,应该会看到以下输出: