Wie Sie erwähnt haben, dass Sie verwenden InputStreamVolleyRequest
, ich hoffe, dass Sie den folgenden Code oder etwas Ähnliches geschrieben haben, auch:
@Override
public void onResponse(byte[] response) {
HashMap<String, Object> map = new HashMap<String, Object>();
try {
if (response!=null) {
String content =request.responseHeaders.get("Content-Disposition")
.toString();
StringTokenizer st = new StringTokenizer(content, "=");
String[] arrTag = st.toArray();
String filename = arrTag[1];
filename = filename.replace(":", ".");
Log.d("DEBUG::FILE NAME", filename);
try{
long lenghtOfFile = response.length;
InputStream input = new ByteArrayInputStream(response);
File path = Environment.getExternalStorageDirectory();
File file = new File(path, filename);
map.put("resume_path", file.toString());
BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(file));
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
}catch(IOException e){
e.printStackTrace();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
Wenn Sie dies bereits getan haben, einen Fortschrittsbalken setzen ist einfach. erhalten ProgressDialog
Objekt und initialisieren, wie unten dargestellt:
progressDialog = new ProgressDialog(Activity Context here);
progressDialog.setTitle("Any Title here");
progressDialog.setMessage("Downloading in Progress...");
progressDialog.setProgressStyle(progressDialog.STYLE_HORIZONTAL);
progressDialog.setCancelable(false);
progressDialog.setMax(100);
progressDialog.setProgress(0);
progressDialog.show();
Dann einfach die while-Schleife ändern, wie unten dargestellt:
while ((count = input.read(data)) != -1) {
total += count;
output.write(data, 0, count);
progress = (int)total*100/file_length;
progressDialog.setProgress(progress);
}
Versuchen Sie dies und lassen Sie mich wissen.
Aber lassen Sie mich auch informieren Sie, dass Volley nicht für schwere Download geeignet ist. Eher empfehle ich Ihnen, DownloadManager
oder Apache HttpClient
oder sogar AsyncTask
zu verwenden. Sie sind einfacher zu benutzen und wahrscheinlich besser für diesen Zweck.
Vielen Dank. Deine Lösung hat mir geholfen. – Newbie
ur willkommen .. Happy Coding !!! –
wird nicht 'onResponse' aufgerufen, nachdem die Datei vollständig heruntergeladen wurde? –