Sobes.tech
Junior

Se poate trimite o fotografie printr-un Intent?

sobes.tech AI

Răspuns de la AI

Da, este posibil.

  1. Transferul URI: Cel mai comun și eficient mod este de a transfera URI-ul fișierului foto.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath - calea către fișier
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // Tip MIME al imaginii
        putExtra(Intent.EXTRA_STREAM, imageUri) // Transferul URI
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Acordarea permisiunilor de citire pentru URI
    }
    startActivity(Intent.createChooser(shareIntent, "Partajează imaginea"))
    
  2. Transferul Bitmap (nu recomandat pentru imagini mari): Se poate serializa Bitmap-ul și să-l plasezi în Extra. Cu toate acestea, nu este recomandat pentru imagini mari din cauza limitărilor de dimensiune ale extrasurilor Intent (de obicei până la 1 MB) și a potențialului OutOfMemoryError.

    val bitmap: Bitmap = ... // Bitmap-ul tău
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // Bitmap-ul trebuie să fie Parcelable
    }
    startActivity(bitmapIntent)
    

    La primire:

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

Cea mai bună abordare pentru schimbul de fotografii între aplicații este utilizarea URI-urilor cu acordarea drepturilor de citire (FLAG_GRANT_READ_URI_PERMISSION), mai ales dacă fișierele media sunt stocate în stocare. Transferul direct al Bitmap-ului prin Extra este potrivit doar pentru imagini foarte mici sau miniaturi.