添加权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
代码实现
private void ok() {
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url(apk).build();
okHttpClient.newCall(request).enqueue(new Callback() {
private int progess;
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// 下载 outputStream inputStream
InputStream inputStream = response.body().byteStream();
//文件的总长度
long max = response.body().contentLength();
String path = Environment.getExternalStorageDirectory() + File.separator + "banmi_330.apk";
File file = new File(path);
//当文件不存在,创建出来
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fileOutputStream = new FileOutputStream(file);
byte[] bytes = new byte[1024];
int readLength = 0;
long cureeLength = 0;
while ((readLength = inputStream.read(bytes)) != -1) {
fileOutputStream.write(bytes, 0, readLength);
cureeLength += readLength;
progess = (int) (cureeLength * 100 / max);
progressBar.setProgress(progess);
Log.d(TAG, "onResponse: " + progess + "%");
}
inputStream.close();
fileOutputStream.close();
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "下载成功", Toast.LENGTH_SHORT).show();
}
});
}
});
}
效果图