Sobes.tech
Junior

Át lehet adni egy fényképet Intenttel?

sobes.tech MI

Válasz az MI-től

Igen, lehetséges.

  1. URI átadás: A leggyakoribb és leghatékonyabb módszer az, ha az fénykép fájl URI-ját adjuk át.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath - fájl elérési útja
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // Kép MIME típusa
        putExtra(Intent.EXTRA_STREAM, imageUri) // URI átadása
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Olvasási jogok biztosítása az URI-hoz
    }
    startActivity(Intent.createChooser(shareIntent, "Kép megosztása"))
    
  2. Bitmap átadása (nem ajánlott nagy képeknél): A Bitmap-et serializálhatjuk és Extra-ba helyezhetjük. Ez azonban nem ajánlott nagy képeknél, mivel az Intent extras méretkorlátai (általában 1 MB-ig) és az OutOfMemoryError kockázata miatt.

    val bitmap: Bitmap = ... // A saját Bitmap
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // A Bitmap Parcelable kell legyen
    }
    startActivity(bitmapIntent)
    

A fogadásnál:

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

A legjobb módszer a fényképek közötti cserehez az URI használata, olvasási jogok biztosításával (FLAG_GRANT_READ_URI_PERMISSION), különösen, ha a médiafájlok a tárolóban vannak. A Bitmap közvetlen átadása Extra-val csak nagyon kicsi képek vagy miniatűrök esetén megfelelő.