如何从Firebase在android(kotlin)中提供的photo uri中检索和存储用户个人资料图片?

问题描述 投票:0回答:1

这可能是一个重复的问题,但是所有代码都没有帮助我,有些答案已过时,现在已弃用。我正在制作一个android应用程序,我想在该应用程序中检索并存储用户的个人资料图片。图像的uri由FirebaseUser类作为uri提供,但我想知道如何从uri中检索位图并将其保存在apps'filesDir()'文件夹中,并在需要时从中获取可绘制的图像。我显然已经尝试了一些代码,但是没有一个起作用。我尝试过两种方法:-

fun getBitmap(context: Context, selectedImage: Uri): Bitmap? {
  val imageStream = context.contentResolver.openInputStream(selectedImage)
  val image = BitmapFactory.decodeStream(imageStream, null, BitmapFactory.Options())
  imageStream?.close()
  return image
}

我发现的另一种方法是使用ImageDecoder和MediaStore的getBitmap() (已弃用)

 val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
                    ImageDecoder.decodeBitmap(ImageDecoder.createSource(contentResolver, Uri.parse("https://lh3.googleusercontent.com/a-/link"))) //here parsing a google account profile pic link
             } else {
                    MediaStore.Images.Media.getBitmap(contentResolver, Uri.parse("https://lh3.googleusercontent.com/a-/link"))
             }

问题是,无论何时尝试使用该应用,应用都会不断崩溃,并显示异常java.io.FileNotFoundException: No content provider。我想念什么吗?我们是否需要在应用程序中进行任何清单配置才能从互联网访问uri?

android image firebase kotlin bitmap
1个回答
0
投票

我建议您使用Glide,这是文档:https://github.com/bumptech/glide

Glide是一个库,通过调用其方法并传递URL,您将变得很不错。


我将向您解释如何准备,

使用Gradle下载,

 repositories {
   mavenCentral()
   google()
 }

 dependencies {
   implementation 'com.github.bumptech.glide:glide:4.10.0'
   annotationProcessor 'com.github.bumptech.glide:compiler:4.10.0'
 }

然后使用它:)

imageView = findViewById(R.id.imageView)
Glide.with(this).load("http://yoururl.png").into(imageView)

这是将图像保存到Firebase:How to save bitmap to Firebase

我建议您的应用程序可用于Firebase数据库,并将图像URL保存到数据库的用户个人资料中

最好,并做魔术:)

© www.soinside.com 2019 - 2024. All rights reserved.