Sobes.tech
Junior

Lze poslat fotografii přes Intent?

sobes.tech AI

Odpověď od AI

Ano, je to možné.

  1. Přenos URI: Nejčastější a nejefektivnější způsob je přenést URI souboru fotografie.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath - cesta k souboru
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // MIME typ obrázku
        putExtra(Intent.EXTRA_STREAM, imageUri) // Přenos URI
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Udělení práv ke čtení URI
    }
    startActivity(Intent.createChooser(shareIntent, "Sdílet obrázek"))
    
  2. Přenos Bitmapy (nedoporučuje se pro velké obrázky): Můžete serializovat Bitmapu a vložit ji do Extra. Nicméně, nedoporučuje se pro velké obrázky kvůli omezením velikosti extras v Intentu (obvykle do 1 MB) a potenciálním OutOfMemoryError.

    val bitmap: Bitmap = ... // Vaše Bitmapa
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // Bitmapa musí být Parcelable
    }
    startActivity(bitmapIntent)
    

Při příjmu:

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

Nejlepší způsob pro výměnu fotografií mezi aplikacemi je použití URI s poskytnutím práv ke čtení (FLAG_GRANT_READ_URI_PERMISSION), zejména pokud jsou mediální soubory uložené v úložišti. Přímý přenos Bitmapy přes Extra je vhodný pouze pro velmi malé obrázky nebo náhledy.