Middle
Ako by ste odovzdali fotografiu do editora?
sobes.tech AI
Odpoveď od AI
Existuje niekoľko spôsobov:
-
Použitie URI súboru: Toto je najbežnejší a najefektívnejší spôsob pre veľké súbory, ako sú fotografie.
- Vytvoríme URI pre súbor obrázka.
- Pošleme tento URI cieľovej Activity pomocou Intentu.
// Vytvoríme URI zo súboru val imageFile = File(filesDir, "my_photo.jpg") val imageUri = FileProvider.getUriForFile(this, "${packageName}.provider", imageFile) // Vytvoríme Intent a pridáme URI val editIntent = Intent(Intent.ACTION_EDIT) editIntent.setDataAndType(imageUri, "image/*") editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Dôležité pre prístup k URI // Spustíme Activity startActivity(editIntent) -
Prenos Bitmapu cez Intent: Vhodné pre malé obrázky alebo náhľady. Bitmap sa serializuje, čo môže viesť k chybám
TransactionTooLargeExceptionpri veľkom rozmere.// Získame Bitmap val bitmap: Bitmap = ... // Váš Bitmap // Vytvoríme Intent a pridáme Bitmap val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_bitmap", bitmap) // Bitmap sa serializuje // Spustíme Activity startActivity(editIntent)V cieľovej Activity:
val bitmap = intent.getParcelableExtra<Bitmap>("image_bitmap") // Používame bitmap -
Uloženie do spoločného cache a odovzdanie mena súboru: Používa sa na dočasný prístup k súboru iným aplikáciám.
- Uložíme súbor do dočasného priečinka dostupného iným aplikáciám (napríklad cache adresár špecifický pre aplikáciu).
- Pošleme cestu k súboru cez Intent.
- Cieľová aplikácia musí mať práva na čítanie z tohto priečinka.
// Uložíme súbor do dočasného adresára val tempFile = File(cacheDir, "temp_photo.jpg") // Zapíšeme dáta fotografie do tempFile // Vytvoríme Intent a odovzdáme cestu k súboru val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_path", tempFile.absolutePath) // Spustíme Activity startActivity(editIntent)V cieľovej Activity:
val imagePath = intent.getStringExtra("image_path") val imageFile = File(imagePath) // Čítame dáta z imageFile
Výber metódy závisí od veľkosti fotografie a požiadaviek na výmenu údajov medzi Activity. Pre veľké obrázky je URI cez FileProvider preferovanou možnosťou.