Контракты результатов деятельности с 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/*")
}
}
Может ли кто-нибудь помочь. Любая обратная связь приветствуется.