Sobes.tech
Junior

Intent orqali rasm yuborish mumkinmi?

sobes.tech AI

AIdan javob

Ha, mumkin.

  1. URI ni tashish qilish: Eng keng tarqalgan va samarali usul - rasm fayli URI sini yuborish.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath - faylning yo'li
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // Rasmning MIME turi
        putExtra(Intent.EXTRA_STREAM, imageUri) // URI ni yuborish
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // URI uchun o'qish huquqini berish
    }
    startActivity(Intent.createChooser(shareIntent, "Rasmni ulash"))
    
  2. Bitmap ni yuborish (katta rasmlar uchun tavsiya etilmaydi): Bitmap ni serializatsiya qilish va Extra ga joylashtirish mumkin. Ammo, bu katta rasmlar uchun tavsiya etilmaydi, chunki Intent extras ning hajmi cheklovlari (odatda 1 MB gacha) va OutOfMemoryError ehtimoli bor.

    val bitmap: Bitmap = ... // Sizning Bitmap
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // Bitmap Parcelable bo'lishi kerak
    }
    startActivity(bitmapIntent)
    

Qabul qilishda:

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

Ilovalar o'rtasida fotosuratlar bilan almashishning eng yaxshi usuli URI dan foydalanish va o'qish huquqlarini berish (FLAG_GRANT_READ_URI_PERMISSION), ayniqsa media fayllar saqlangan bo'lsa. Bitmap ni to'g'ridan-to'g'ri Extra orqali uzatish faqat juda kichik rasmlar yoki miniatyuralar uchun mos keladi.