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]标签设置为当前程序的Application

    
        [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. 读取

    
    /// <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. 调用

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            TextView tv = new TextView(this);
            //不使用Activity上下文读取
            tv.Text = ReadFromAssetsWithoutActivityContext();
            SetContentView(tv);
        }
    
    
posted @ 2018-03-22 19:22  青玄鸟  阅读(873)  评论(0编辑  收藏  举报