Контракты результатов деятельности с Ucrop: не удается получить результат урожая в приложение

У меня есть действие, которое должно получить изображение из галереи и просмотреть его, прежде чем разрешить пользователю загружать его в базу данных. Для этого я использую UCrop в качестве обрезки изображений с контрактами результатов деятельности. Действие обрезки изображения запускается успешно, но приложение не может получить результат в моем представлении изображения для предварительного просмотра. Я не могу точно сказать, в чем проблема, так как я относительно новичок в Android, и ничего из того, что я нашел по подобным проблемам, похоже, не помогает.

Вот мой код.

      class NewPostActivity : AppCompatActivity() {
private var myUrl ?= null
private var imageUri: Uri ?= null
private var storagePostPicRef: StorageReference ?= null
private lateinit var publishPostButton: ImageView
private lateinit var closePostPageButton: ImageView
private lateinit var newPostImageSelector: ImageView


private val uCropContract = object : ActivityResultContract<List<Uri>, Uri>(){
    override fun createIntent(context: Context, input: List<Uri>): Intent {
        val inputUri = input[0]
        val outputUri = input[1]

        val uCrop = UCrop.of(inputUri, outputUri)
            .withAspectRatio(2F, 1F)
            .withMaxResultSize(1720, 860)

        return uCrop.getIntent(context)
    }

    override fun parseResult(resultCode: Int, intent: Intent?): Uri {
        return getOutput(intent!!)!!
    }
}

private val getContent = registerForActivityResult(ActivityResultContracts.GetContent()){ uri ->
    val inputUri = uri.toString().toUri()
    val outputUri = File(filesDir, System.currentTimeMillis().toString()+".jpg").toUri()

    val listUri = listOf<Uri>(inputUri, outputUri)
    cropImage.launch(listUri)
}

private val cropImage = registerForActivityResult(uCropContract){
    val uri = intent.data
    imageUri = uri
    newPostImageSelector.setImageURI(imageUri)
}

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_new_post)

    storagePostPicRef = FirebaseStorage.getInstance().reference.child("Post Pictures")
    publishPostButton = findViewById(R.id.publishNewPost)
    closePostPageButton = findViewById(R.id.closeAddPost)
    newPostImageSelector = findViewById(R.id.newPostImage)

    publishPostButton.setOnClickListener{
        uploadImage()
    }
    closePostPageButton.setOnClickListener {
        val closeIntent = Intent(this, MainActivity::class.java)
        startActivity(closeIntent)
        finish()
    }
    newPostImageSelector.setOnClickListener {
        getContent.launch("image/*")
    }

}

Может ли кто-нибудь помочь. Любая обратная связь приветствуется.

0 ответов

Другие вопросы по тегам