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í AssetManagera 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:

Setting the build action to 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í:

Example screenshot