puedo problemas por pesados para movil enviar desde correo como celular archivos archivo adjuntar android android-intent attachment

problemas - no puedo adjuntar archivos en gmail android



Android Adjuntar un archivo a GMAIL-No se puede adjuntar un archivo vacĂ­o (4)

Tenía un programa que siempre adjuntaba el mismo archivo a GMAIL (Redactar> Adjuntar archivo> Abrir desde> "Mi programa"). 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 funcionó bien hasta Android 6.0. Ahora, recibo el siguiente error al intentar usarlo:

No se puede adjuntar un archivo vacío

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

Sin embargo, instalé ES File Explorer, y cuando hago la misma rutina, y selecciono el archivo, recibo un diálogo que dice:

Recoger archivo como

  • Modo normal de Android (para MMS, Gmail, ...)
  • File Way (Prueba esto si falla arriba)

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

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

¡Gracias por adelantado!

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


Aquí es cómo solucionarlo.

Vaya a Configuración -> Aplicaciones -> Gmail -> Permisos Active el permiso para "Almacenamiento". Esta solución solucionó el problema por mí.


No pude encontrar una respuesta clara (envío de un archivo adjunto en gmail sin tarjeta SD) Traté de copiar a otro nombre de archivo pero no a cigarro. La forma en que lo hice funcionar fue copiar a la carpeta de Descargas y continuar desde allí.

Obtenga la ruta de las descargas con este Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_DOWNLOADS)

extrae la ruta completa a la carpeta downlaods, copie el archivo adjunto allí y estamos bien. Archivos sobre 20M no van


Ok, ahora funciona, después de mucha investigación e interceptar algunos Intents.

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

Hice esto 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 tuvo 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, ¡ahora el archivo se está adjuntando de nuevo! Vea el enlace si se enfrenta a este problema y no se olvide del nuevo .xml que debe crearse.


Vea la siguiente pregunta:

android-6-cannot-share-files-anymore

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

Problema 3141 - Android-developer-preview

Si va a Configuración-> Aplicaciones-> Gmail-> Permisos y habilita el permiso de "Almacenamiento" manualmente, entonces el recurso compartido funciona.

Gmail debe solicitar el permiso de "Almacenamiento" en este escenario y funcionará como lo hizo en todas las versiones anteriores de Android.

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