Xamarin.Android 讀取AboutAssets.txt

讀取AboutAssets.txt

使用Activity上下文讀取

// 須要把AboutAssets.txt的Build Action屬性設置爲AndroidAsset(https://developer.xamarin.com/guides/android/application_fundamentals/resources_in_android/part_6_-_using_android_assets/)
    protected override void OnCreate(Bundle savedInstanceState)
    {
        base.OnCreate(savedInstanceState);
        TextView tv = new TextView(this);

        //使用Activity上下文讀取
        string content;
        AssetManager assets = this.Assets;
        using (StreamReader sr = new StreamReader(assets.Open("AboutAssets.txt")))
        {
            content = sr.ReadToEnd();
        }
        tv.Text = content;
        SetContentView(tv);
    }

不使用Activity上下文讀取

  1. 建立Application子類並使用[Application]標籤設置爲當前程序的Applicationandroid

    [Application]
        public class DemoApplication:Application
        {
    
             public DemoApplication(IntPtr handle, JniHandleOwnership ownerShip) : base(handle, ownerShip)
            {
    
            }
            public static volatile Context s_appContext = null;
    
            public override void OnConfigurationChanged(Configuration newConfig)
            {
                base.OnConfigurationChanged(newConfig);
            }
    
            public override void OnCreate()
            {
                base.OnCreate();
                s_appContext = this.ApplicationContext;
            }
    
            public override void OnLowMemory()
            {
                base.OnLowMemory();
            }
    
            public override void OnTerminate()
            {
                base.OnTerminate();
            }
        }
  2. 讀取app

    /// <summary>
    /// 讀取Assets文件夾下的文件(Assets文件夾能夠有子文件夾)
    /// 須要把AboutAssets.txt的Build Action屬性設置爲AndroidAsset(https://developer.xamarin.com/guides/android/application_fundamentals/resources_in_android/part_6_-_using_android_assets/)
    /// DemoApplication 繼承自Android.Application使用[Application]標籤設置爲當前程序的Application
    /// </summary>
    /// <returns></returns>
    public string ReadFromAssetsWithoutActivityContext()
    {
        string content;
        AssetManager am = ProXamarinAndroid.s_appContext.Assets;
        using (StreamReader sr = new StreamReader(am.Open("AboutAssets.txt"))) 
        {
            content = sr.ReadToEnd();
        }
        return content;
    }
  3. 調用ide

    protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            TextView tv = new TextView(this);
            //不使用Activity上下文讀取
            tv.Text = ReadFromAssetsWithoutActivityContext();
            SetContentView(tv);
        }
相關文章
相關標籤/搜索