Sobes.tech
Junior

Intent аркылуу сүрөттү өткөрүү мүмкүнбү?

sobes.tech AI

AIден жооп

Һә, бол мүмкiн.

  1. URI-ны өткөрүп берүү: Ең кеңири тараган жана эффективдүү жол — сүрөт файлынын URI-син өткөрүп берүү.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath — файлдын жолу
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // сүрөттүн MIME түрү
        putExtra(Intent.EXTRA_STREAM, imageUri) // URI-ны өткөрүп берүү
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // URI үчүн окуу укуктарын берүү
    }
    startActivity(Intent.createChooser(shareIntent, "Сүрөттү бөлүшүү"))
    
  2. Bitmap өткөрүп берүү ( чоң сүрөттөр үчүн сунушталбайт): Bitmap-ты сериалдаштырып, Extra-га коюуга болот. Бирок, бул чоң сүрөттөр үчүн сунушталбайт, себеби Intent extras өлчөмүнүн чектөөлөрү (жалпысынан 1 МБ чейин) жана OutOfMemoryError коркунучу бар.

    val bitmap: Bitmap = ... // Сиздин Bitmap
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // Bitmap Parcelable болушу керек
    }
    startActivity(bitmapIntent)
    

Кабыл алганда:

val receivedBitmap: Bitmap? = intent.getParcelableExtra("image_bitmap")

Эң жакшы ыкма — колдонмолор ортосунда сүрөттөрдү алмашуу үчүн URI колдонуу жана укуктарды берүү (FLAG_GRANT_READ_URI_PERMISSION), эгерде медиа-файлдар сакталган болсо. Bitmap-ты түздөн-түз Extra аркылуу өткөрүү — өтө кичинекей сүрөттөр же миниатюралар үчүн гана ылайыктуу.