Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This recipe shows how to download a file using WebClient in Xamarin.Android.
To download a file (.mp3, etc.) follow these steps:
Add new using statements to your code:
using Java.IO; using System.IO; using System.Net;
Create a WebClient object:
var webClient=new WebClient();
Create the URL for the files to download:
var url=new Uri("http://8morning.com/demo/wp-content/uploads/2016/04/hoc-photoshop.jpg");
Create the array for contains the length of a file.
byte[] bytes=null;
Add an event handler that will execute when the download is complete. Create a ProgressDialog to show a progress indicator and an optional text message.
webClient.DownloadProgressChanged+= WebClient_DownloadProgressChanged; dialog = new ProgressDialog (this); dialog.SetProgressStyle (ProgressDialogStyle.Horizontal);// style is horizontal dialog.SetTitle("Downloading..."); dialog.SetCancelable (false); //dialog.SetButton("Cancel",); dialog.SetCanceledOnTouchOutside (false); //if it is true. When you touch anywhere lie outside the dialog-> dialog will be close. dialog.Show ();// showing a dialog try { bytes= await webClient.DownloadDataTaskAsync(url); } catch(TaskCanceledException) { Toast.MakeText(this,"Task Canceled!",ToastLength.Long).Show(); return; } catch(Exception a) { Toast.MakeText(this,a.InnerException.Message,ToastLength.Long).Show(); dialog.Progress=0; return; }
var documentsPath=Android.OS.Environment.ExternalStorageDirectory+"/Download"; // The direction is Download folder in Device store. A file will be save here. string localFilename = Name your file +".jpg"; string localPath=System.IO.Path.Combine(documentsPath,localFilename);// documentsPath +"/"+ localFilename dialog.SetTitle("Download Complete");// //Save the Mp3 using writeAsync FileStream fs=new FileStream(localPath,FileMode.OpenOrCreate); await fs.WriteAsync (bytes, 0, bytes.Length);// writes to Download folder fs.Close (); dialog.Progress = 0;
In event`` ``WebClient_DownloadProgressChanged will execute progress when a file is downloading.
void WebClient_DownloadProgressChanged (object sender, DownloadProgressChangedEventArgs e) { dialog.Progress = e.ProgressPercentage; if (e.ProgressPercentage == 100) { dialog.Hide (); } }
Sample
-