Middle
Jak byste předali fotografii do editoru?
sobes.tech AI
Odpověď od AI
Existuje několik způsobů:
-
Použití URI souboru: To je nejběžnější a nejefektivnější způsob pro velké soubory, jako jsou fotografie.
- Vytvořte URI pro soubor s obrázkem.
- Přeneste tento URI do cílové Activity pomocí Intent.
// Vytvoření URI ze souboru val imageFile = File(filesDir, "my_photo.jpg") val imageUri = FileProvider.getUriForFile(this, "${packageName}.provider", imageFile) // Vytvoření Intent a přidání URI val editIntent = Intent(Intent.ACTION_EDIT) editIntent.setDataAndType(imageUri, "image/*") editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Důležité pro přístup k URI // Spuštění Activity startActivity(editIntent) -
Přenos Bitmap přes Intent: Vhodné pro malé obrázky nebo náhledy. Bitmap se serializuje, což může způsobit chyby
TransactionTooLargeExceptionu velkých rozměrů.// Získání Bitmapu val bitmap: Bitmap = ... // Váš Bitmap // Vytvoření Intent a přidání Bitmapu val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_bitmap", bitmap) // Bitmap se serializuje // Spuštění Activity startActivity(editIntent)V cílové Activity:
val bitmap = intent.getParcelableExtra<Bitmap>("image_bitmap") // Použití bitmapu -
Uložení do sdílené cache a předání názvu souboru: Používá se pro dočasný přístup k souboru jiným aplikacím.
- Uložíme soubor do dočasné složky, která je přístupná jiným aplikacím (například, specifický cache adresář aplikace).
- Předáme cestu k souboru přes Intent.
- Cílová aplikace musí mít práva ke čtení z této složky.
// Uložení souboru do dočasného adresáře val tempFile = File(cacheDir, "temp_photo.jpg") // Zápis dat fotografie do tempFile // Vytvoření Intent a předání cesty k souboru val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_path", tempFile.absolutePath) // Spuštění Activity startActivity(editIntent)V cílové Activity:
val imagePath = intent.getStringExtra("image_path") val imageFile = File(imagePath) // Čtení dat z imageFile
Volba metody závisí na velikosti fotografie a požadavcích na výměnu dat mezi Activity. Pro velké obrázky je URI přes FileProvider preferovanou volbou.