使用这个方法需继承AsyncTask<Void, Integer, Boolean>,个人理解步骤分为四个阶段。初始化变量->创建下载器->监听下载器状态->安装应用。
直接看代码:(核心代码类)在测试的时候为了方便将接口代码写在了一起。
public class SystemDownloaderFileDownUtil extends AsyncTask<Void, Integer, Boolean> {
//下载管理器
private DownloadManager mDownloadManager;
/**
* 下载内容及状态
* int[0]:已下载文件大小
* int[1]:总下载文件大小
* int[2]:下载状态
*/
private int[] mBytesAndStatus;
//下载文件保存路径
private String mApkFileDirPath;
//安装文件名称
private String mName;
//下载路径
private String mDownloadUrl;
//任务ID
private long mTaskId;
//下载任务接口
private SingleFileDownloadCallback mInstallerListener;
/**
* 私有化构造方法
*/
private SystemDownloaderFileDownUtil() {
super();
init();
}
/**
* 创建内核下载操作实例
*
* @return 内核下载操作实例 {@link SystemDownloaderFileDownUtil}
*/
public static SystemDownloaderFileDownUtil create() {
return new SystemDownloaderFileDownUtil();
}
/**
* 初始化方法
*/
private void init() {
mDownloadManager = (DownloadManager) BaseMainInitialize.getAppContext().getSystemService(Context.DOWNLOAD_SERVICE);
mBytesAndStatus = new int[]{-1, -1, 0};
mApkFileDirPath = BaseContext.FilePath.AppPath + "/Apk";
mName = "upApk.apk";
mDownloadUrl = "http://192.168.1.243:11000/index.php?mod=io&op=download&path=NUVvU1lLYXI5SkNQcjByMmhqTXZwRmowMVNicXozQzVnYkNidG1MX210VnVVZ3ZnZzduczdDSlcyRXJZYWpROFduNlN4aDFzdUJMM0t3&t=1676514363995";
mInstallerListener = null;
}
/**
* 设置安装监听
*
* @param installListener 安装监听 {@link SingleFileDownloadCallback}
* @return {@link SystemDownloaderFileDownUtil}
*/
public SystemDownloaderFileDownUtil setInst