Sobes.tech
Junior

Ar galima per Intent perduoti nuotrauką?

sobes.tech AI

Atsakymas iš AI

Taip, tai įmanoma.

  1. URI perdavimas: Dažniausias ir efektyviausias būdas yra perduoti nuotraukos failo URI.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath - failo kelias
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // MIME tipo
        putExtra(Intent.EXTRA_STREAM, imageUri) // URI perdavimas
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // suteikti skaitymo teises URI
    }
    startActivity(Intent.createChooser(shareIntent, "Dalintis nuotrauka"))
    
  2. Bitmap perdavimas (nerekomenduojama dideliems vaizdams): Galite serializuoti Bitmap ir įdėti jį į Extra. Tačiau tai nerekomenduojama dideliems vaizdams dėl Intent extras dydžio apribojimų (paprastai iki 1 MB) ir galimo OutOfMemoryError.

    val bitmap: Bitmap = ... // Jūsų Bitmap
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // Bitmap turi būti Parcelable
    }
    startActivity(bitmapIntent)
    

Gaunant:

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

Geriausias būdas keistis nuotraukomis tarp programėlių yra naudoti URI su skaitymo teisėmis (FLAG_GRANT_READ_URI_PERMISSION), ypač jei medijos failai saugomi atmintyje. Tiesioginis Bitmap perdavimas per Extra tinka tik labai mažiems vaizdams arba miniatiūroms.