Как загрузить изображение в хранилище Firebase, используя Kotlin в Android Q - PullRequest
0 голосов
/ 05 мая 2020

Я пробовал более старый метод
var bitmap = MediaStore.Images.Media.getBitmap (), который теперь является устаревшим, и я поискал в Интернете и не нашел удовлетворительного метода. Пожалуйста, предложите любой способ загрузки изображения в хранилище Firebase.

1 Ответ

1 голос
/ 05 мая 2020

Выберите изображение из галереи весело, например:

private fun selectImageFromGallery() {

val intent = Intent()
intent.type = "image/*"
intent.action = Intent.ACTION_GET_CONTENT
startActivityForResult(
        Intent.createChooser(
            intent,
            "Please select..."
        ),
        GALLERY_REQUEST_CODE
    )
}

onActivityResult как это:

override fun onActivityResult(
    requestCode: Int,
    resultCode: Int,
    data: Intent?
) {

    super.onActivityResult(
        requestCode,
        resultCode,
        data
    )

    if (requestCode == GALLERY_REQUEST_CODE
        && resultCode == Activity.RESULT_OK
        && data != null
        && data.data != null
    ) {

        // Get the Uri of data
        val file_uri = data.data
        uploadImageToFirebase(file_uri)
    }
 }

загрузить изображение:

private fun uploadImageToFirebase(fileUri: Uri) {
if (fileUri != null) {
val fileName = UUID.randomUUID().toString() +".jpg"

val database = FirebaseDatabase.getInstance()
val refStorage = FirebaseStorage.getInstance().reference.child("images/$fileName")

refStorage.putFile(fileUri)
    .addOnSuccessListener(
        OnSuccessListener<UploadTask.TaskSnapshot> { taskSnapshot ->
            taskSnapshot.storage.downloadUrl.addOnSuccessListener {
                val imageUrl = it.toString()
            }
        })

    ?.addOnFailureListener(OnFailureListener { e ->
        print(e.message)
    })
  }
}

Как вы видите, вам не нужны растровые изображения

...