2010-08-29 27 views
5

He creado una aplicación que envía un correo electrónico con una grabación. Cuando se activa el intento y se elige el correo electrónico como aplicación para enviar el archivo adjunto, puede ver que hay un archivo adjunto pero archivo adjunto no se entrega.Intento de correo electrónico de Android sin enviar archivo adjunto

Intent sendIntent = new Intent(Intent.ACTION_SEND); 
//Mime type of the attachment (or) u can use sendIntent.setType("*/*") 
sendIntent.setType("audio/3gp"); 
//Subject for the message or Email 
sendIntent.putExtra(Intent.EXTRA_SUBJECT, "My Recording"); 
//Full Path to the attachment 
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(fileName)); 
//Use a chooser to decide whether email or mms 
startActivity(Intent.createChooser(sendIntent, "Send email...")); 

¿Alguna idea?

+0

Tengo el mismo problema con una imagen, incluso con el "archivo: //" al principio. ¿Has encontrado otra forma de hacerlo funcionar? – skamlet

+1

Encontré el problema, mi archivo era privado, por lo que la aplicación de correo no pudo leer el archivo. Ahora funciona bien – skamlet

+0

@ D4r7h ¿Cómo hiciste tu archivo "no privado"? con 'file.SetReadable (true);' ?? También traté de mover el archivo a ~ carpeta, sin suerte. Tengo un archivo txt que se envía correctamente. ¿Me puede dar una pista, por favor? –

Respuesta

10

Lo he descubierto, debes asegurarte de que tu uri tenga "file: //" delante de él.

0

Comenzando con el nivel 24 de API, no puede usar los URI "file: //" para pasar archivos entre paquetes. En su lugar, debe implementar FileProvider y pasar el archivo con él.

Uri fileUri = FileProvider.getUriForFile(context, "com.yourdomain.yourapp.fileprovider", file); 

Lo bueno de FileProvides es que no es necesario el permiso WRITE_EXTERNAL_STORAGE (para el nivel de API de 21 y más).

La mejor descripción como another StackOverflow answer o en esa documentación.

Cuestiones relacionadas