这种方式是调用了系统原生的下载DownloadManager 去传url去进行下载的。缺点就是如果遇到了 需要认证证书的网址,就比较麻烦。 优点就是可以在原生apk 文件管理看到下载进度。
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
public void onClick(View view) {
//url地址
Uri uri = Uri.parse("https:/xxxxxx.zip");
DownloadManager.Request request = new DownloadManager.Request(uri);
//设置下载存放位置
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "update.zip");
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setTitle("Downloading file");
DownloadManager downloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
long downloadId = downloadManager.enqueue(request);
BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
long id = intent.getLongExtra(DownloadManager.EXTRA_DOWNLOAD_ID, -1);
if (id == downloadId) {
// 下载完成
}
}
};
registerReceiver(receiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}
需要在AndroidManifest.xml 中添加权限
<uses-permission android:name="android.permission.INTERNET" />