使用步骤分为两步
第一步导入 okhttp3 依赖
第二步调用本文提供的 utils
第一步这里不做说明了,直接提供第二步复制即用
DownloadUtil 中 download 为下载文件 参数说明
这里主要看你把 destFileName 下载文件名称定义为什么后缀,比如我定义为 .mp4 下载后 就是 mp4 格式
这里 destFileDir 下载目录要说一下,如果没有开启存储权限或者使用了系统默认路径就会报错 比如 /0 文件一类的错误,怎么使用可以参考 open failed: ENOENT (No such file or directory) 解决办法
DownloadUtil 中 saveVideoToAlbum 为将下载好的视频更新到手机图库中,原来的放式已经随着安全性提高不适用了,这里基本就是复制出一份更新到系统层的文件夹
源码
DownloadUtil.download(mVideoUrl,getUrlPath(),"sing示例名称${System.currentTimeMillis()}.mp4",object : DownloadUtil.OnDownloadListener{
override fun onDownloadSuccess(file: File?) {
"下载成功".toast()
//更新视频到相册
DownloadUtil.saveVideoToAlbum(this@MoreActivity,file?.absolutePath)
Log.e("视频下载", "下载成功: ${file?.absolutePath}")
}
override fun onDownloading(progress: Int) {
Log.e("视频下载", "下载进度:${progress}")
}
override fun onDownloadFailed(e: Exception?) {
LoadingSingDialog.dismiss()
Log.e("视频下载", "下载失败:${e?.printStackTrace()}")
}
})
DownloadUtil
object DownloadUtil {
private var okHttpClient: OkHttpClient? = null
/**
* @param url 下载连接
* @param destFileDir 下载的文件储存目录
* @param destFileName 下载文件名称
* @param listener 下载监听
*/
fun download(url: String, destFileDir: String, destFileName: String, listener: OnDownloadListener) {
if (url == null || url == ""){
return
}
if (okHttpClient == null){
okHttpClient = OkHttpClient()
}
val request: Request = Request.Builder().url(url).build()
okHttpClient!!.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
// 下载失败监听回调
listener.