bitmap.sameAs () не работает при сравнении изображений из-за выбора намерений

#android #kotlin #bitmap #picasso #android-bitmap

#Android #kotlin #растровое изображение #picasso #android-bitmap

Вопрос:

Мое приложение проверяет, совпадает ли новое выбранное изображение с предыдущим, поэтому мне не нужно обновлять облачные данные, но newBitmap.sameAs(oldBitmap) всегда возвращает false, даже если я выбираю ту же фотографию.

Часть моего кода:

 private lateinit var oldBitmap: Bitmap
private lateinit var newBitmap: Bitmap

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

    myProfilePictureUrl = intent.getStringExtra("myProfilePictureUrl")!!

    if (myProfilePictureUrl.isNotEmpty()) {
        Picasso.get().load(myProfilePictureUrl).into(my_profile_imageView)
    }

    oldBitmap = (my_profile_imageView.drawable as BitmapDrawable).bitmap       //for later comparison

    my_profile_imageView.setOnClickListener {
        val intent = Intent(Intent.ACTION_PICK)

        intent.type = "image/*"

        startActivityForResult(intent, RESULT_CODE_PICK_IMAGE)
    }
}

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

   if (requestCode == RESULT_CODE_PICK_IMAGE amp;amp; resultCode == Activity.RESULT_OK) {
       val inputStream = contentResolver.openInputStream(data!!.data!!)

       val bitmap = BitmapFactory.decodeStream(inputStream)

       newBitmap = bitmap              //for comparison

       my_profile_imageView.setImageBitmap(bitmap)
   }
} 
  

И когда пользователь нажимает кнопку «Сохранить» на панели действий, будет ли он сначала проверять, являются ли они одной и той же фотографией:

 private fun updateProfile(nickname: String) {
    if (this::newBitmap.isInitialized amp;amp; !newBitmap.sameAs(oldBitmap)) {    //here
        
        //upload task code

    } 
}
  

ПРОБЛЕМА В ТОМ, что
!newBitmap.sameAs(oldBitmap) всегда возвращает false, даже если это одна и та же фотография, может быть, проблема с PICASSO? Или способ, которым я использовал для сравнения, неправильный. Буду признателен за любую помощь.

Комментарии:

1. В итоге я сравнил uri .