Middle
Hogyan juttatnád el egy fényképet egy szerkesztőbe?
sobes.tech MI
Válasz az MI-től
Számos módszer létezik:
-
Fájl URI használata: Ez a leggyakoribb és leghatékonyabb módszer nagyobb fájlok, például fényképek esetén.
- Hozzon létre URI-t a kép fájlhoz.
- Ezt az URI-t adja át a cél Activity-nek Intent segítségével.
// URI létrehozása fájlból val imageFile = File(filesDir, "my_photo.jpg") val imageUri = FileProvider.getUriForFile(this, "${packageName}.provider", imageFile) // Intent létrehozása és URI hozzáadása val editIntent = Intent(Intent.ACTION_EDIT) editIntent.setDataAndType(imageUri, "image/*") editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Fontos az URI eléréséhez // Activity indítása startActivity(editIntent) -
Bitmap átadása Intent segítségével: Kisebb képek vagy előnézetek esetén alkalmas. A Bitmap serializálódik, ami nagy méret esetén
TransactionTooLargeExceptionhibát okozhat.// Bitmap megszerzése val bitmap: Bitmap = ... // Az Ön Bitmap-je // Intent létrehozása és Bitmap hozzáadása val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_bitmap", bitmap) // Bitmap serializálódik // Activity indítása startActivity(editIntent)A cél Activity-ben:
val bitmap = intent.getParcelableExtra<Bitmap>("image_bitmap") // Bitmap használata -
Ideiglenes cache-ben való tárolás és fájlnév átadása: Ideiglenes hozzáférést biztosít más alkalmazások számára a fájlhoz.
- A fájlt ideiglenes mappába mentjük, amely más alkalmazások számára elérhető (pl. alkalmazás-specifikus cache könyvtár).
- A fájl elérési útját Intent segítségével adjuk át.
- A célalkalmazásnak jogosultsággal kell rendelkeznie az adott mappához való hozzáféréshez.
// Fájl ideiglenes mappába mentése val tempFile = File(cacheDir, "temp_photo.jpg") // A fénykép adatait írja a tempFile-ba // Intent létrehozása és az útvonal átadása val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_path", tempFile.absolutePath) // Activity indítása startActivity(editIntent)A cél Activity-ben:
val imagePath = intent.getStringExtra("image_path") val imageFile = File(imagePath) // Adatok olvasása az imageFile-ból
A módszer kiválasztása a fénykép méretétől és az Activity-k közötti adatcsere követelményeitől függ. Nagy képek esetén az URI FileProvider-en keresztül a legjobb választás.