Používání prostředků Androidu
Prostředky poskytují způsob, jak do aplikace zahrnout libovolné soubory, jako je text, xml, písma, hudba a video. Pokud se pokusíte zahrnout tyto soubory jako "prostředky", Android je zpracuje do svého systému prostředků a nezpracovaná data nebudete moct získat. Pokud chcete získat přístup k nedotknutým datům, jsou prostředky jedním ze způsobů, jak to udělat.
Prostředky přidané do projektu se zobrazí stejně jako systém souborů, ze kterého může vaše aplikace číst pomocí AssetManageru.
V této jednoduché ukázce přidáme do projektu asset textového souboru, přečteme ho pomocí AssetManager
a zobrazíme ho v textovém zobrazení.
Přidání prostředku do projektu
Prostředky jsou ve Assets
složce projektu. Do této složky přidejte nový textový soubor s názvem read_asset.txt
. Dejte do něj nějaký text jako "Přišel jsem z majetku!".
Sada Visual Studio by měla nastavit akci sestavení pro tento soubor na AndroidAsset:
Výběrem správné akce BuildAction zajistíte, že se soubor zabalí do apk v době kompilace.
Čtení prostředků
Prostředky se čtou pomocí AssetManageru. Instance objektu AssetManager
je k dispozici přístupem k vlastnostem Assets v objektu Android.Content.Context
, jako je například Aktivita.
V následujícím kódu otevřete náš read_asset.txt asset, přečteme jeho obsah a zobrazíme ho pomocí Objektu 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);
}
Čtení binárních prostředků
Použití StreamReader
ve výše uvedeném příkladu je ideální pro textové prostředky. Pro binární prostředky použijte následující kód:
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...
}
Spuštění aplikace
Spusťte aplikaci a měli byste vidět následující: