Sobes.tech
Junior

Peut-on transmettre une photo via un Intent?

sobes.tech IA

Réponse de l'IA

Oui, c'est possible.

  1. Transmission d'URI : La méthode la plus courante et efficace consiste à transmettre l'URI du fichier photo.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath - chemin du fichier
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // Type MIME de l'image
        putExtra(Intent.EXTRA_STREAM, imageUri) // Transmission de l'URI
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Accorder les droits de lecture sur l'URI
    }
    startActivity(Intent.createChooser(shareIntent, "Partager l'image"))
    
  2. Transmission de Bitmap (non recommandé pour les grandes images) : Il est possible de sérialiser le Bitmap et de le placer dans un Extra. Cependant, cela n'est pas recommandé pour les grandes images en raison des limitations de taille des extras d'Intent (généralement jusqu'à 1 Mo) et du risque potentiel OutOfMemoryError.

    val bitmap: Bitmap = ... // Votre Bitmap
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // Le Bitmap doit être Parcelable
    }
    startActivity(bitmapIntent)
    

    Lors de la réception :

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

La meilleure approche pour échanger des photos entre applications est d'utiliser l'URI avec l'octroi des droits de lecture (FLAG_GRANT_READ_URI_PERMISSION), surtout si les fichiers multimédia sont stockés dans le stockage. La transmission directe de Bitmap via Extra ne convient que pour des images très petites ou des miniatures.