[Xamarin] Android 透過 DownloadManager 下載檔案並且偵測是否下載完成

2015-11-30

上一篇文章(Android 透過 DownloadManager 下載檔案 ),我們寫到了如何透過DownloadManager 下載一個檔案,但是我們要如何才能知道下載進度如何呢?
Screenshot_2015-11-30-12-17-05
先回顧一下上一篇文章下載的Code,最後一個部分我們必須要宣告一隻long 來抓住下載的編號


DownloadReference1=DownloadManager1.Enqueue(request);

之後,我們再看看檢查的Code


 
            //檢查是否下載完成
            FindViewById<Button>(Resource.Id.btnCheck).Click += delegate
            {
                try
                {
 
                    //這邊在Android思維中很特別,是要先跟系統查詢DownloadManager 去透過代碼查詢自己的事件並且用一個Cursor抓住位置
                    ICursor cursor = DownloadManager1.InvokeQuery(new DownloadManager.Query().SetFilterById(DownloadReference1));
 
                    //這一行很重要 沒有將Curso 移到最前面會錯
                    cursor.MoveToFirst();
 
                    //取代代碼編號
                    //代碼一覽表: http://developer.android.com/reference/android/app/DownloadManager.html
                    var q = cursor.GetInt(cursor.GetColumnIndex(DownloadManager.ColumnStatus));
 
                    if (q == (int)DownloadStatus.Successful)
                    {
                        FindViewById<TextView>(Resource.Id.txtDownloadStatus).Text = "好了!!! , 代碼是:" + q;
                    }
                    else
                    {
                        FindViewById<TextView>(Resource.Id.txtDownloadStatus).Text = "還沒~~~~~ , 代碼是:" + q;
                    }
 
                }
                catch (Exception ex)
                {
                    Log.Error("SampleDownloadManager", ex.Message + "," + ex.StackTrace);
                }
            };

如果等待網路連線的編號是: 4
Screenshot_2015-11-30-12-16-36
正在下載中是2
Screenshot_2015-11-30-12-16-59
成功代碼是8
Screenshot_2015-11-30-12-17-05
關於代碼是多少可以參考這個網站:http://developer.android.com/reference/android/app/DownloadManager.html
範例下載


當麻許的超技八 2014 | Donma Hsu Design.