Middle
Como transferiria uma fotografia para um editor?
sobes.tech IA
Resposta da IA
Existem várias formas:
-
Uso de URI de ficheiro: É a forma mais comum e eficiente para ficheiros grandes, como fotografias.
- Criar um URI para o ficheiro de imagem.
- Transmitir esse URI para a Activity de destino através de um Intent.
// Criar um URI a partir de um Ficheiro val imageFile = File(filesDir, "my_photo.jpg") val imageUri = FileProvider.getUriForFile(this, "${packageName}.provider", imageFile) // Criar um Intent e adicionar o URI val editIntent = Intent(Intent.ACTION_EDIT) editIntent.setDataAndType(imageUri, "image/*") editIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Importante para aceder ao URI // Iniciar a Activity startActivity(editIntent) -
Transmissão de Bitmap via Intent: Adequado para imagens pequenas ou pré-visualizações. O Bitmap é serializado, o que pode causar erros
TransactionTooLargeExceptionse for muito grande.// Obter o Bitmap val bitmap: Bitmap = ... // O seu Bitmap // Criar um Intent e adicionar o Bitmap val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_bitmap", bitmap) // Bitmap serializado // Iniciar a Activity startActivity(editIntent)Na Activity de destino:
val bitmap = intent.getParcelableExtra<Bitmap>("image_bitmap") // Utilizar o bitmap -
Guardar na cache comum e passar o nome do ficheiro: Usado para acesso temporário ao ficheiro por outras aplicações.
- Guardar o ficheiro numa pasta temporária acessível a outras aplicações (por exemplo, diretório de cache específico da aplicação).
- Passar o caminho do ficheiro através de um Intent.
- A aplicação de destino deve ter permissões para ler dessa pasta.
// Guardar o ficheiro no diretório temporário val tempFile = File(cacheDir, "temp_photo.jpg") // Escrever os dados da fotografia em tempFile // Criar um Intent e passar o caminho do ficheiro val editIntent = Intent(this, EditorActivity::class.java) editIntent.putExtra("image_path", tempFile.absolutePath) // Iniciar a Activity startActivity(editIntent)Na Activity de destino:
val imagePath = intent.getStringExtra("image_path") val imageFile = File(imagePath) // Ler os dados de imageFile
A escolha do método depende do tamanho da fotografia e dos requisitos de troca de dados entre Activities. Para imagens grandes, URI via FileProvider é a opção preferida.