Sobes.tech
Junior

É possível enviar uma fotografia através de um Intent?

sobes.tech IA

Resposta da IA

Sim, é possível.

  1. Transferência de URI: A forma mais comum e eficaz é transferir o URI do arquivo de fotografia.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath - caminho para o arquivo
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // Tipo MIME da imagem
        putExtra(Intent.EXTRA_STREAM, imageUri) // Transferência de URI
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Conceder permissões de leitura para o URI
    }
    startActivity(Intent.createChooser(shareIntent, "Partilhar imagem"))
    
  2. Transferência de Bitmap (não recomendado para imagens grandes): Pode serializar o Bitmap e colocá-lo num Extra. No entanto, não é recomendado para imagens grandes devido às limitações no tamanho dos extras do Intent (normalmente até 1 MB) e ao potencial OutOfMemoryError.

    val bitmap: Bitmap = ... // O seu Bitmap
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // O Bitmap deve ser Parcelable
    }
    startActivity(bitmapIntent)
    

    Ao receber:

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

A melhor abordagem para trocar fotos entre aplicações é usar URI com permissão de leitura (FLAG_GRANT_READ_URI_PERMISSION), especialmente se os ficheiros de mídia estiverem armazenados no armazenamento. A transferência direta de Bitmap via Extra é adequada apenas para imagens muito pequenas ou miniaturas.