Использование ресурсов Android
Ресурсы предоставляют способ включения произвольных файлов, таких как текст, xml, шрифты, музыка и видео в приложении. Если вы попытаетесь включить эти файлы в качестве ресурсов, Android обработает их в своей системе ресурсов, и вы не сможете получить необработанные данные. Если вы хотите получить доступ к данным, нетронутым, ресурсы являются одним из способов сделать это.
Ресурсы, добавленные в проект, будут отображаться так же, как файловая система, считываемая приложением с помощью AssetManager.
В этой простой демонстрации мы добавим в проект текстовый файл, считываем его с помощью AssetManager
и отображаем его в TextView.
Добавление ресурса в проект
Ресурсы отправляются в папку Assets
проекта. Добавьте в эту папку read_asset.txt
новый текстовый файл. Поместите в него текст, как "Я пришел из ресурса!".
Visual Studio должен задать действие сборки для этого файла в AndroidAsset:
При выборе правильной сборки файл будет упаковен в APK во время компиляции.
Чтение ресурсов
Ресурсы считываются с помощью AssetManager. Экземпляр AssetManager
доступен путем доступа к свойству Assets для объекта Android.Content.Context
, например действия.
В следующем коде мы открываем ресурс 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...
}
Запуск приложения
Запустите приложение и увидите следующее: