Sobes.tech
Junior

Je možné odoslať fotografiu cez Intent?

sobes.tech AI

Odpoveď od AI

Áno, je to možné.

  1. Prenos URI: Najbežnejší a najefektívnejší spôsob je preniesť URI súboru fotografie.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath - cesta k súboru
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // MIME typ obrázka
        putExtra(Intent.EXTRA_STREAM, imageUri) // Prenos URI
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Poskytnutie práv na čítanie URI
    }
    startActivity(Intent.createChooser(shareIntent, "Zdieľať obrázok"))
    
  2. Prenos Bitmapy (nedoporučuje sa pre veľké obrázky): Môžete serializovať Bitmapu a vložiť ju do Extra. To však nie je odporúčané pre veľké obrázky kvôli obmedzeniam veľkosti extras v Intente (zvyčajne do 1 MB) a potenciálnemu OutOfMemoryError.

    val bitmap: Bitmap = ... // Vaša Bitmapa
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // Bitmap musí byť Parcelable
    }
    startActivity(bitmapIntent)
    

Pri prijímaní:

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

Najlepší spôsob na výmenu fotografií medzi aplikáciami je použitie URI s poskytnutím práv na čítanie (FLAG_GRANT_READ_URI_PERMISSION), najmä ak sú mediálne súbory uložené v úložisku. Priamy prenos Bitmapy cez Extra je vhodný iba pre veľmi malé obrázky alebo miniatúry.