Sobes.tech
Junior

Kann man ein Foto über einen Intent übertragen?

sobes.tech KI

Antwort von AI

Ja, das ist möglich.

  1. Übertragung von URI: Der gebräuchlichste und effektivste Weg ist, die URI der Fotodatei zu übertragen.

    val imageUri = Uri.fromFile(File(imagePath)) // imagePath - Pfad zur Datei
    val shareIntent = Intent(Intent.ACTION_SEND).apply {
        type = "image/*" // MIME-Typ des Bildes
        putExtra(Intent.EXTRA_STREAM, imageUri) // Übertragung der URI
        addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Leserechte für die URI gewähren
    }
    startActivity(Intent.createChooser(shareIntent, "Bild teilen"))
    
  2. Übertragung von Bitmap (nicht empfohlen für große Bilder): Man kann den Bitmap serialisieren und in ein Extra packen. Das ist jedoch nicht zu empfehlen für große Bilder wegen der Beschränkungen der Intent-Extras (normalerweise bis 1 MB) und möglichem OutOfMemoryError.

    val bitmap: Bitmap = ... // Dein Bitmap
    val bitmapIntent = Intent(...).apply {
        putExtra("image_bitmap", bitmap) // Bitmap muss Parcelable sein
    }
    startActivity(bitmapIntent)
    

    Beim Empfang:

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

Der beste Ansatz zum Austausch von Fotos zwischen Apps ist die Verwendung von URI mit Leserechten (FLAG_GRANT_READ_URI_PERMISSION), insbesondere wenn es sich um Mediendateien handelt, die im Speicher gespeichert sind. Die direkte Übertragung von Bitmap über Extra ist nur für sehr kleine Bilder oder Miniaturen geeignet.