Middle
Hoe zou je een foto naar een editor overbrengen?
sobes.tech AI
Antwoord van AI
Er zijn verschillende manieren:
-
Gebruik van URI van bestand: Dit is de meest gebruikelijke en efficiënte manier voor grote bestanden, zoals foto's.
- Maak een URI voor het afbeeldingsbestand.
- Geef deze URI door aan de doel-Activity via een Intent.
// Maak een URI van een bestand val imageFile = File(filesDir, "my_photo.jpg") val imageUri = FileProvider.getUriForFile(this, "${packageName}.provider", imageFile) // Maak een Intent en voeg de URI toe val editIntent = Intent(Intent.ACTION_EDIT) editIntent.setDataAndType(imageUri, "image/*") editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Belangrijk voor toegang tot URI // Start de Activity startActivity(editIntent) -
Overdracht van Bitmap via Intent: Geschikt voor kleine afbeeldingen of previews. Bitmap wordt geserialiseerd, wat kan leiden tot
TransactionTooLargeExceptionbij grote afmetingen.// Verkrijg Bitmap val bitmap: Bitmap = ... // Jouw Bitmap // Maak een Intent en voeg de Bitmap toe val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_bitmap", bitmap) // Bitmap wordt geserialiseerd // Start de Activity startActivity(editIntent)In de doel-Activity:
val bitmap = intent.getParcelableExtra<Bitmap>("image_bitmap") // Gebruik de bitmap -
Opslaan in gedeelde cache en bestandsnaam doorgeven: Wordt gebruikt voor tijdelijke toegang tot het bestand door andere apps.
- Sla het bestand op in een tijdelijke map die toegankelijk is voor andere apps (bijvoorbeeld, app-specifieke cache directory).
- Geef het pad naar het bestand door via een Intent.
- De doelapp moet leesrechten hebben voor deze map.
// Sla het bestand op in een tijdelijke directory val tempFile = File(cacheDir, "temp_photo.jpg") // Schrijf de foto-gegevens naar tempFile // Maak een Intent en geef het pad door val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_path", tempFile.absolutePath) // Start de Activity startActivity(editIntent)In de doel-Activity:
val imagePath = intent.getStringExtra("image_path") val imageFile = File(imagePath) // Lees gegevens uit imageFile
De keuze van methode hangt af van de grootte van de foto en de vereisten voor gegevensuitwisseling tussen Activities. Voor grote afbeeldingen is URI via FileProvider de voorkeursoptie.