Hallo ich bekomme ZIP-Datei vom Server und ich habe Code dafür geschrieben.ProgressDialog funktioniert nicht einwandfrei
Ich zeige progressdialog auch
Hier Code
public class DownloadImageFromUrl : AsyncTask<string, string, string>
{
private ProgressDialog pd;
private Context context;
public DownloadImageFromUrl(Context context)
{
this.context = context;
}
protected override void OnPreExecute()
{
pd = new ProgressDialog(context);
pd.SetMessage("Downloading file. Please wait...");
pd.Indeterminate = false;
pd.Max = 100;
pd.SetProgressStyle(ProgressDialogStyle.Horizontal);
pd.SetCancelable(true);
pd.Show();
base.OnPreExecute();
}
protected override void OnProgressUpdate(params string[] values)
{
base.OnProgressUpdate(values);
pd.SetProgressNumberFormat(values[0]);
Log.Verbose("values", "" + values[0]);
pd.Progress = int.Parse(values[0]);
}
protected override void OnPostExecute(string result)
{
pd.Dismiss();
}
protected override string RunInBackground(params string[] @params)
{
var storagePath = Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads);
string filePath = System.IO.Path.Combine(storagePath.AbsolutePath, "testfile.zip");
int count;
try
{
URL url = new URL("http://shadikidukan.co.in/abhi/AAA.zip");
filename = Path.GetFileName(new Uri(url.ToString()).AbsolutePath);
System.Console.WriteLine("Abhijir" + filename);
URLConnection connection = url.OpenConnection();
connection.Connect();
int LengthOfFile = connection.ContentLength;//Here connection.ContentLength return -1
Log.Verbose("length", ""+LengthOfFile);
InputStream input = new BufferedInputStream(url.OpenStream(), 8192);
OutputStream output = new FileOutputStream(filePath);
byte[] data = new byte[1024];
long total = 0;
while ((count = input.Read(data)) != -1)
{
total += count;
PublishProgress("" + (int)((total/100)/LengthOfFile));
output.Write(data, 0, count);
}
output.Flush();
output.Close();
input.Close();
}
catch (Exception e)
{
System.Console.WriteLine("Abhijir"+e.Message);
}
return null;
}
}
connection.ContentLength return -1
und wenn die Datei heruntergeladen wird es negative Werte angezeigt werden und Fortschritte Inkrementieren nicht ..
in progressupdate Methode es immer negative Werte
erhaltenprotected override void OnProgressUpdate(params string[] values)
{
base.OnProgressUpdate(values);
pd.SetProgressNumberFormat(values[0]);
Log.Verbose("values", "" + values[0]);//values[0] has negative values
pd.Progress = int.Parse(values[0]);
}
wie dieses Problem zu überwinden und richtigen Wert in progressdialog anzuzeigen.
Was ist die Lösung dafür Sir –
Es gibt keine Lösung. Wie ich schon sagte, können Sie wegen der Art und Weise, wie das Protokoll selbst entworfen wird, keine Inhaltslänge erhalten. Wenn es sich um Ihren Server handelt, ändern Sie die Konfiguration so, dass keine Chunked-Übertragung mehr verwendet wird. Wenn nicht, dann steckst du fest. –
Ya ist mein Server können Sie mir sagen, wie man die Konfiguration ändern kann –