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 AssetManager
elementu 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:
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: