Как изменить метод startActivityForResult и onActivityResult в kotlin, android studio по новым стандартам

Сейчас изучаю язык kotlin для себя. Нашел в интернете как можно написать инстаграм приложение. Видео довольно подробные, но старые (2018 года), поэтому некоторые методы оттуда устарели. Код ниже, по идее, должен включать сохранять сфотографированную фотографию в базу данных в виде ссылки: этот кусок кода из файла EditProfileActivity.kt

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == cameraHelper.REQUEST_CODE && resultCode == RESULT_OK) {
            mFirebaseHelper.uploadUserPhoto(cameraHelper.imageUri!!) {
                it.metadata!!.reference!!.downloadUrl.addOnCompleteListener {
                    val photoUrl = it.toString()
                    mFirebaseHelper.updateUserPhoto(photoUrl){
                        mUser = mUser.copy(photo = photoUrl)
                        profile_image.loadUserPhoto(mUser.photo)
                    }
                }
            }
        }
    }

этот кусок кода из файла CameraHelper.kt, его просто вынесли для удобства

class CameraHelper(private val activity: Activity) {
    var imageUri: Uri? = null
    val REQUEST_CODE = 1
    private val simpleDateFormat = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.US)

    fun takeCameraPicture() {
        val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
        if (intent.resolveActivity(activity.packageManager) != null) {
            val imageFile = createImageFile()
            imageUri = FileProvider.getUriForFile(activity,
                "com.example.instapirate.fileprovider",
                imageFile)
            intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri)
            activity.startActivityForResult(intent, REQUEST_CODE)
        }
    }
    private fun createImageFile(): File {
        val storageDir = activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES)
        return File.createTempFile(
            "JPEG_${simpleDateFormat.format(Date())}_",
            ".jpg",
            storageDir
        )
    }
}

Полагаю, что из-за устаревшего метода код работает не правильно и не загружает ссылку в базу данных. Так предполагается регистрировать ссылку на изображение(скрин из google firebase realtime database), само изображение появляется в Storage

Так предполагается

Но ссылка в realtime database не появляется, и в storage ничего нет: То что получается

Если потребуется больше кода, то наверное я смогу отредактировать и залить весь код со всего файла, но мне кажется, что дело именно в неправильном оформлении устаревшего метода onActivityResult и startActivityForResult. Я гуглил, но не смог найти как в моём случае лучше изменить код так, чтобы он работал. Прошу помощи.


Ответы (0 шт):