一键式如何使用URL将多张图像下载到设备内部存储

问题描述

我想使用其URL链接从互联网下载多张图像。它们存储在Firebase中。我尝试阅读Firebase文档,但它们没有解释如何下载多个图像并将其保存到内部存储中。我不知道从互联网下载图像的任何其他方式,但是我知道那里有很多。我要做的就是允许用户一键下载多个图像,并将这些图像存储在设备的内部存储器中。谁能帮助我。

解决方法

假设您具有图像的Urls,则可以从Firebase存储中检索图像,这些Urls也可以存储在Firebase Cloud Firestore中,从而可以将Url存储在易于检索的文档中。查看下面的文档:

https://firebase.google.com/docs/firestore/query-data/get-data

要下载一个网址,请使用此功能:

fun downloadFile(uRl: String,context: Context) {
    val myDir: File = File(Environment.getExternalStorageDirectory(),"MyApp/")
    if (!myDir.exists()) {
        myDir.mkdirs()
    }
    val mgr = context.getSystemService(DOWNLOAD_SERVICE) as DownloadManager
    val downloadUri: Uri = Uri.parse(uRl)
    val request = DownloadManager.Request(
        downloadUri
    )
    request.setAllowedNetworkTypes(
        DownloadManager.Request.NETWORK_WIFI
                or DownloadManager.Request.NETWORK_MOBILE
    ).setAllowedOverMetered(true)
        .setAllowedOverRoaming(true).setTitle("Myapp - Downloading $uRl")
        .setVisibleInDownloadsUi(true)
        .setDestinationInExternalPublicDir("MyApp" + "/",uRl)
    mgr.enqueue(request)
}

Urls应该形成一个数组,然后放入for循环中并按如下方式使用,数组类型取决于url是作为字符串还是url,以下方法是针对字符串形式的,但对于网址。

用法:

val urlArray = ArrayList<String>()
    urlArray.add("Url/example.com")
    urlArray.add("Url/example/two.com")

    mButtonDo.setOnClickListener(object : View.OnClickListener() {
        override fun onClick(view: View?) {
            // Execute the async task
            // mMyTask = new DownloadTask().execute(URLS);
            for (i in 0 until urlArray.size) {
                downloadFile(urlArray[i],this@Activityname)
            }
        }
    })