Android通过okhttp下载文件(本文案例 下载mp4到本地,并更新到相册)

使用步骤分为两步

第一步导入 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.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值