Udostępnij za pośrednictwem


Używanie elementów zawartości systemu Android

Zasoby umożliwiają dołączanie dowolnych plików, takich jak tekst, xml, czcionki, muzyka i wideo w aplikacji. Jeśli spróbujesz dołączyć te pliki jako "zasoby", system Android przetworzy je w systemie zasobów i nie będzie można pobrać danych pierwotnych. Jeśli chcesz uzyskać dostęp do danych nietkniętych, zasoby są jednym ze sposobów, aby to zrobić.

Zasoby dodane do projektu będą wyświetlane tak samo jak system plików, który może odczytywać dane z aplikacji przy użyciu narzędzia AssetManager. W tym prostym pokazie dodamy element zawartości pliku tekstowego do projektu, odczytujemy go przy użyciu AssetManagerelementu i wyświetlimy go w analizie TextView.

Dodawanie elementu zawartości do projektu

Zasoby są w Assets folderze projektu. Dodaj nowy plik tekstowy do tego folderu o nazwie read_asset.txt. Umieść w nim jakiś tekst, taki jak "Pochodziłem z zasobu!".

Program Visual Studio powinien ustawić akcję kompilacji dla tego pliku na AndroidAsset:

Setting the build action to AndroidAsset

Wybranie poprawnej funkcji BuildAction gwarantuje, że plik zostanie spakowany do pliku APK w czasie kompilacji.

Odczytywanie zasobów

Zasoby są odczytywane przy użyciu menedżera zasobów. Wystąpienie obiektu AssetManager jest dostępne przez uzyskanie dostępu do właściwości Assets w obiekcie Android.Content.Context, takim jak działanie. W poniższym kodzie otwieramy nasz zasób read_asset.txt , odczytujemy zawartość i wyświetlamy ją przy użyciu kontrolki 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);
}

Odczytywanie zasobów binarnych

Użycie elementu StreamReader w powyższym przykładzie jest idealne dla zasobów tekstowych. W przypadku zasobów binarnych użyj następującego kodu:

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...

}

Uruchamianie aplikacji

Uruchom aplikację i powinny zostać wyświetlone następujące elementy:

Example screenshot