Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android Adjuntar un archivo a GMAIL – No se puede adjuntar archivo vacío

Tenía un programa que siempre adjuntaría el mismo archivo a GMAIL (Compose> Attach File> Open From> "MyProgram"). Siempre seleccionaría el mismo archivo.

Lo que estaba haciendo era:

String path = Environment.getExternalStorageDirectory() + "/file.3gp"; File f = new File(path); Uri data = Uri.fromFile(f); Intent i = new Intent(); i.setData(data); setResult(Activity.RESULT_OK, i); finish(); 

Esto funcionaba bien hasta Android 6.0. Ahora, recibo el error siguiente al intentar utilizarlo:

No se puede adjuntar archivo vacío

Astro File Sharing me está dando el mismo error (puede ser una versión antigua).

Sin embargo, he instalado ES File Explorer, y cuando hago la misma rutina, y seleccionar el archivo, recibo un Diálogo que dice:

Recoge el archivo como

  • Modo Android normal (para MMS, Gmail, …)
  • Manera del archivo (intente esto si arriba falla)

El "File Way" fallará como lo hace mi programa. La "forma normal de Android" funcionará bien.

¿Alguien tiene alguna idea de lo que hace, así que puedo replicar?

¡Gracias por adelantado!

OBS: Ya probé el putExtra (STREAM, path) muchas veces, pero sin éxito.

  • Android Propósito de enviar correo electrónico con adjunto
  • 3 Solutions collect form web for “Android Adjuntar un archivo a GMAIL – No se puede adjuntar archivo vacío”

    Vea la siguiente pregunta:

    Android-6-no puede compartir-archivos-ya

    Este comportamiento es con Android 6.0 y Gmail. Por favor vea el siguiente hilo.

    Edición 3141 – android-developer-preview

    Si accede a Ajustes-> Aplicaciones-> Gmail-> Permisos y habilita el permiso "Almacenamiento" manualmente, entonces el recurso compartido funciona.

    Gmail debería solicitar permiso de "Almacenamiento" en este escenario y funcionaría como lo hizo en toda la versión anterior de Android.

    Otras aplicaciones de correo electrónico deben manejar los archivos adjuntos correctamente.

    Ok, tengo que trabajar ahora, después de un montón de investigación y la intercepción de algunos Intents.

    Lo que tenía que hacer era cambiar el archivo: /// al contenido: //.

    Lo hice siguiendo esta información de Android: https://developer.android.com/reference/android/support/v4/content/FileProvider.html

    El único cambio importante fue que usé una ruta codificada para /sdcard/file.ext. Además, la línea

     getUriForFile(getContext(), "com.mydomain.fileprovider", newFile); 

    Fue cambiado a

     Uri contentUri = FileProvider.getUriForFile(this, "com.mydomain.fileprovider", newFile); 

    También tenía que incluir:

     intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); i.setData(contentUri); 

    Realmente no entiendo por qué tuve que cambiar de archivo a contenido , pero después de esto, el archivo ahora se está adjuntando de nuevo! Vea el enlace si enfrenta este problema y no olvide el nuevo .xml que necesita ser creado.

    Aquí está cómo solucionarlo.

    Vaya a Ajustes -> Aplicaciones -> Gmail -> Permisos Activar el permiso para "Almacenamiento" Este trabajo solucionó el problema para mí.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.