创建文件夹
下载文件
InputStream is = null;
byte[] buf = new byte[2048];
int len = 0;
FileOutputStream fos = null;
OutputStream os = null;
if (android.os.Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
//储存下载文件的目录
File dir = new File(destFileDir);
Log.e("文件路径", "====" + dir.getPath());
if (!dir.exists()) {
dir.mkdirs();
}
file = new File(dir, destFileName);
fos = new FileOutputStream(file);
isQ = false;
} else {
Uri uri = insertFileIntoMediaStore(destFileName);
os = resolver.openOutputStream(uri);
isQ = false;
}
try {
is = response.body().byteStream();
long total = response.body().contentLength();
long sum = 0;
while ((len = is.read(buf)) != -1) {
if (isQ) {
os.write(buf, 0, len);
} else {
fos.write(buf, 0, len);
}
sum += len;
// int progress = (int) (sum * 1.0f / total * 100);
int progress = (int) (sum * 1.0f * 100 / apkSize);
//下载中更新进度条
listener.onDownloading(progress, total);
}
fos.flush();
//下载完成
listener.onDownloadSuccess(file);
} catch (Exception e) {
listener.onDownloadFailed(e);
} finally {
try {
if (is != null) {
is.close();
}
if (fos != null) {
fos.close();
}
} catch (IOException e) {
}
}
如果不想这么麻烦 只需要在manifest中添加
android:requestLegacyExternalStorage = "true"