Как получить и сохранить фотографию профиля пользователя из фотографии, предоставленной Firebase в android (kotlin)? - PullRequest
0 голосов
/ 07 января 2020

Возможно, это дублирующий вопрос, но ни один из кодов не помог мне, и некоторые ответы устарели и теперь устарели. Я делаю приложение android и хочу получить и сохранить фотографию профиля пользователя в своем приложении. URI изображения предоставляется классом FirebaseUser как URI, но я хочу знать, как извлечь растровое изображение из URI и сохранить его в папке 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's 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 из inte rnet?

1 Ответ

0 голосов
/ 08 января 2020

Я рекомендую вам использовать 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: Как сохранить растровое изображение в Firebase

Я рекомендую ваше приложение работать с базой данных Firebase, и вы сохраняете URL изображения вашего пользователя. профиль в базе

лучше всего, а у волхвов c:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...