最近公司需要做个APP下载的功能,并且监听下载状态以及判断是否安装成功。
--可用于应用更新
--可用于广告下载类
本来想使用okdownload,但是想想既然android提供了api我又何必依赖一个三方库呢。
-----------用于记录download manager的简单使用,方便以后ctrl +c/v--------------------
直接上代码,我会注释清楚的
使用:
new DownloadUtils(context,url,"test.apk").startDownloadWithNoReport();
//或者
new DownloadUtils(context,url,"test.apk").startDownloadWithReport([此处是上报链接参数]...);
源码:
package com.xmiles.hytechad.utils;
import android.app.Activity;
import android.app.DownloadManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import androidx.annotation.NonNull;
import androidx.core.content.FileProvider;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DownloadUtils {
//下载器
private DownloadManager downloadManager;
private Context mContext;
//下载的ID
private long downloadId;
private String name;
private String pathstr;
private String url;
private boolean isNeedReport;
//通知相关
private String notifyTitle = "正在下载", notifyContent = "请稍等";
//上报相关地址
private ArrayList<String> mAdBeginDownUrl;
private ArrayList<String> mAdEndDownUrl;
private ArrayList<String> mAdBeginInstallUrl;
private ArrayList<String> mAdEndInstallUrl;
public DownloadUtils(@NonNull Context context, @NonNull String url, @NonNull String name) {
this.mContext = context;
this.name = name;
this.url = url;
}
public DownloadUtils setNotify(@NonNull String