Sobes.tech
Junior

Vai ar iespējams nosūtīt foto caur Intent?

sobes.tech AI

Atbilde no AI

Jā, tas ir iespējams.

  1. URI pārsūtīšana: Visbiežāk un efektīvākā metode ir pārsūtīt attēla faila URI.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath - ceļš uz failu
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // MIME tips attēlam
        putExtra(Intent.EXTRA_STREAM, imageUri) // URI pārsūtīšana
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // piešķirt lasīšanas tiesības URI
    }
    startActivity(Intent.createChooser(shareIntent, "Dalīties ar attēlu"))
    
  2. Bitmap pārsūtīšana (neiesaka lieliem attēliem): Var serializēt Bitmap un ievietot to Extra. Tomēr tas nav ieteicams lieliem attēliem, jo ir ierobežojumi Intent extras izmēram (parasti līdz 1 MB) un potenciāla OutOfMemoryError risks.

    val bitmap: Bitmap = ... // Jūsu Bitmap
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // Bitmap jābūt Parcelable
    }
    startActivity(bitmapIntent)
    

Saņemot:

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

Labākais veids, kā apmainīties ar fotogrāfijām starp lietojumprogrammām, ir izmantot URI ar lasīšanas tiesībām (FLAG_GRANT_READ_URI_PERMISSION), īpaši, ja multimediju faili ir glabāti atmiņā. Tiešā Bitmap pārsūtīšana caur Extra ir piemērota tikai ļoti mazām bildēm vai miniaturām.