From 5fb367e32147f7a504b55474d02707ea9876df11 Mon Sep 17 00:00:00 2001 From: lzl <1239365383@qq.com> Date: Mon, 15 Dec 2025 14:22:09 +0800 Subject: [PATCH] =?UTF-8?q?app=E5=86=85=E4=B8=8B=E8=BD=BDapk=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xscm/moduleutil/utils/DownloadUtil.java | 75 ++++++++++++++++--- 1 file changed, 63 insertions(+), 12 deletions(-) diff --git a/BaseModule/src/main/java/com/xscm/moduleutil/utils/DownloadUtil.java b/BaseModule/src/main/java/com/xscm/moduleutil/utils/DownloadUtil.java index 0ac59f38..4e83104e 100644 --- a/BaseModule/src/main/java/com/xscm/moduleutil/utils/DownloadUtil.java +++ b/BaseModule/src/main/java/com/xscm/moduleutil/utils/DownloadUtil.java @@ -1,16 +1,21 @@ package com.xscm.moduleutil.utils; +import android.annotation.SuppressLint; import android.content.Context; import android.os.Environment; import android.os.Handler; import android.os.Looper; + import androidx.annotation.NonNull; import androidx.annotation.Nullable; + import android.util.Log; import com.alibaba.android.arouter.utils.TextUtils; import com.blankj.utilcode.util.FileUtils; +import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.ThreadUtils; +import com.blankj.utilcode.util.ToastUtils; import java.io.File; import java.io.FileNotFoundException; @@ -18,8 +23,12 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.util.Objects; +import io.reactivex.Observable; +import io.reactivex.ObservableEmitter; +import io.reactivex.ObservableOnSubscribe; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; import okhttp3.ResponseBody; import retrofit2.Call; import retrofit2.Callback; @@ -42,18 +51,60 @@ public class DownloadUtil { private static final String PATH_AUDIO = Environment.getExternalStorageDirectory() + "/qipao/audio"; - public DownloadUtil(Context context,String downUrl) { - this.mContext = context; - - if (mApi == null) { - //初始化网络请求接口 - mApi = ApiHelper.getInstance().createService(ApiInterface.class); - int i = downUrl.lastIndexOf('/');//一定是找最后一个'/'出现的位置 - if (i != -1) { - downUrl = downUrl.substring(i); - } - mApkPath = new File(Objects.requireNonNull(mContext.getExternalFilesDir(PATH_APK+"_"+downUrl)).getAbsolutePath()).getAbsolutePath(); + @SuppressLint("CheckResult") + public DownloadUtil(Context context, String downUrl) { + // 1. 判空,避免空指针 + if (context == null) { + ToastUtils.showShort("Context 不能为 null!"); + LogUtils.e("Context 不能为 null!."+(mApi == null)); + return; } + if (downUrl == null || downUrl.trim().isEmpty()) { + ToastUtils.showShort("下载链接不能为 null 或空!"); + LogUtils.e("下载链接不能为 null 或空!."+(mApi == null)); + return; + } + + this.mContext = context; + final String dUrl = downUrl; + File qipaoDir = new File(mContext.getFilesDir(), "qipao"); + if (qipaoDir.exists() && qipaoDir.isDirectory()) { + Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + LogUtils.e("删除文件中."+(mApi == null)); + FileUtils.deleteAllInDir(qipaoDir); + emitter.onNext(true); + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(result -> { + LogUtils.e("删除成功."+(mApi == null)); + if (mApi == null) { + //初始化网络请求接口 + mApi = ApiHelper.getInstance().createService(ApiInterface.class); + int i = dUrl.lastIndexOf('/');//一定是找最后一个'/'出现的位置 + String downUrlEnd = ""; + if (i != -1) { + downUrlEnd = dUrl.substring(i); + if (downUrlEnd.contains("/")) { + downUrlEnd = downUrlEnd.replace("/", ""); + } + } + mApkPath = new File(mContext.getFilesDir(), PATH_APK + downUrlEnd).getAbsolutePath(); + } + }); + } else { + if (mApi == null) { + //初始化网络请求接口 + mApi = ApiHelper.getInstance().createService(ApiInterface.class); + int i = downUrl.lastIndexOf('/');//一定是找最后一个'/'出现的位置 + if (i != -1) { + downUrl = downUrl.substring(i); + } + mApkPath = new File(mContext.getFilesDir(), PATH_APK + downUrl.replace("/", "")).getAbsolutePath(); + } + } + + } public void downloadVoiceFile(String url, final DownloadListener downloadListener) {