AhauTech logoAhauTech

Flutter compartir archivos Android (intents + SDK + dependencias)

Actualizado 14 jul 2026

Introducción

Implementar correctamente Flutter compartir archivos Android puede parecer una tarea simple, pero en la práctica es uno de los escenarios más complejos cuando se trabaja con integración nativa en Android. Especialmente si necesitas recibir archivos desde el explorador o desde otras aplicaciones, tanto con la app cerrada como abierta.

En este artículo aprenderás cómo resolver problemas reales al implementar Flutter compartir archivos Android, incluyendo el uso del plugin receive_sharing_intent, el manejo de MainActivity onNewIntent Flutter Android, errores con Android Intents y conflictos con versiones de SDK. Además, veremos cómo lidiar con casos específicos como Flutter archivos MHTML Android y dependencias que exigen configuraciones particulares.

Si alguna vez te encontraste con errores que “desaparecen solos”, configuraciones que no se aplican o archivos que no llegan cuando la app está abierta, aquí tienes una guía completa basada en experiencia real.


Cómo funciona Flutter compartir archivos Android

Para implementar Flutter compartir archivos Android, normalmente se utiliza el plugin receive_sharing_intent, que permite capturar archivos enviados desde otras aplicaciones mediante Android Intents.

Android utiliza intents para compartir datos entre aplicaciones, como se explica en la documentación oficial de Android Developers. Esto significa que tu app debe estar preparada para recibir diferentes tipos de acciones como:

  • ACTION_SEND
  • ACTION_SEND_MULTIPLE
  • ACTION_VIEW

El problema es que estos intents no se comportan igual en todos los escenarios.

Subtema: Cold start vs Warm start

Uno de los errores más comunes en Android Intent compartir archivos Flutter ocurre cuando:

  • Cold start (app cerrada) → funciona correctamente
  • Warm start (app abierta) → el archivo no se recibe

Esto pasa porque Flutter no actualiza automáticamente el intent activo.

Solución clave: onNewIntent

Para solucionar esto, es necesario modificar MainActivity:

override fun onNewIntent(intent: Intent) {
    super.onNewIntent(intent)
    setIntent(intent)
}

Este cambio permite que Flutter detecte nuevos intents cuando la app ya está abierta, resolviendo el problema en MainActivity onNewIntent Flutter Android.


Configuración correcta de Intents en Android

Otro punto crítico en Flutter compartir archivos Android es la configuración del AndroidManifest.xml.

Muchos errores vienen de filtros mal definidos. La configuración recomendada es:

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <action android:name="android.intent.action.SEND_MULTIPLE" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="*/*" />
</intent-filter>

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="*/*" />
    <data android:scheme="content" />
    <data android:scheme="file" />
</intent-filter>

Según la guía de Flutter Docs para Android devs, Flutter puede manejar intents, pero requiere que Android esté correctamente configurado.

Puntos clave

  • Usar SEND_MULTIPLE siempre
  • Evitar MIME types específicos
  • Usar */* para mayor compatibilidad
  • Filtrar archivos en Flutter, no en Android

Esto es esencial para que funcione correctamente con receive_sharing_intent Flutter Android y casos como Flutter archivos MHTML Android.


Problemas con SDK y dependencias en Flutter Android

Uno de los problemas más confusos al trabajar con Flutter compartir archivos Android es cuando el proyecto no reconoce la versión de SDK configurada.

En nuestro caso, configuramos:

compileSdk = 37
targetSdk = 37

Pero el proyecto no lo reconocía.

Subtema: SDK Platform vs Build Tools

El error estaba en no tener instalado el SDK correcto.

En Android Studio → SDK Manager:

  • Build Tools (ej: 37.1) → no es suficiente
  • SDK Platform (android-37) → es obligatorio

Hasta que instalamos android-37, el problema se resolvió.


Dependencias que rompen la compatibilidad

Otro problema real al implementar Flutter compartir archivos Android ocurre cuando una dependencia requiere una versión específica de SDK.

Nos pasó con una librería que:

  • Funcionaba en Windows
  • Pero en Android exigía SDK 36

Intentamos:

compileSdk = 36
targetSdk = 36

Pero no funcionó porque el SDK no estaba instalado.

Decisión práctica: cambiar la librería

Optamos por usar file_selector, que no tenía ese requisito, y todo funcionó correctamente.

Puntos clave al elegir dependencias

  • Verificar requisitos de SDK
  • Validar compatibilidad con Android
  • Revisar mantenimiento del paquete

Esto es especialmente importante en proyectos que usan receive_sharing_intent Flutter Android o manejan Flutter archivos MHTML Android.


Problemas con Visual Studio Code y caché

Otro comportamiento curioso que encontramos fue:

  • Cambios que no se reflejaban
  • Errores que persistían sin razón
  • Builds inconsistentes

Incluso ocurrió que:

Un error seguía en la noche… y al día siguiente ya no estaba.

¿Por qué pasa esto?

Se debe a:

  • caché de Gradle
  • procesos en segundo plano
  • sincronización incompleta

Buenas prácticas

  • Ejecutar flutter clean
  • Reiniciar el IDE
  • Recompilar completamente

Manejo de archivos MHTML en Flutter Android

Trabajar con Flutter archivos MHTML Android agrega complejidad adicional.

Muchos exploradores:

  • no envían MIME correcto
  • usan application/octet-stream
  • o */*

Por eso:

  • debes aceptar todos los tipos en Android
  • y filtrar por extensión en Flutter

Flutter compartir archivos Android flujo intents cold warm start

Conclusión

Implementar correctamente Flutter compartir archivos Android implica mucho más que usar un plugin. Es necesario entender cómo Android maneja los intents, cómo Flutter interactúa con ellos y cómo influyen factores externos como el SDK, las dependencias y el entorno de desarrollo.

La solución completa incluye:

  • Configurar correctamente AndroidManifest
  • Manejar onNewIntent en MainActivity
  • Instalar el SDK correcto
  • Elegir dependencias compatibles
  • Controlar el comportamiento del entorno

Si estás trabajando con Android Intent compartir archivos Flutter o usando receive_sharing_intent Flutter Android, aplicar estas prácticas te permitirá evitar errores comunes y construir una solución robusta.

Como siguiente paso, te recomiendo probar tu implementación en distintos dispositivos y exploradores de archivos para asegurar compatibilidad total.