private Uri downloadFileFromURL(URL url, Context context, String fileName) {
try {
URLConnection conn = url.openConnection();
HttpURLConnection httpConnection = conn instanceof HttpURLConnection ? (HttpURLConnection ) conn : null;
if(httpConnection != null) {
int contentLength = httpConnection.getContentLength();
int len, length = 0;
byte[] buf = new byte[8192];
InputStream is = httpConnection.getInputStream();
File file = new File(context.getExternalFilesDir(null), fileName);
OutputStream os = new FileOutputStream(file);
try {
while((len = is.read(buf, 0, buf.length)) > 0) {
os.write(buf, 0, len);
length += len;
publishProgress((int) (PROGRESS_MAX * (float) length / contentLength));
}
os.flush();
}
finally {
is.close();
os.close();
}
return Uri.fromFile(file);
}
}
catch(IOException e)
{
//Exception handling goes here
}
return null;
}
Я написал этот метод в своем классе AsyncTask, поэтому я использую publishProgress для обновления прогресса, вы можете удалить эту строку. Но я полагаю, что вы также написали свой AsyncTask.
Надеюсь, это поможет:)
И не забудьте добавить разрешение android.permission.INTERNET в ваш android-manifest.xml. Я сделал эту глупую ошибку, сервал раз:)