问题描述
我想使用其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)
}
}
})