2010-08-29 13 views
5

Ho creato un'applicazione che invia un messaggio di posta elettronica con una registrazione, Quando l'intenzione è licenziata e l'email è scelta come app per inviare l'allegato, è possibile vedere che c'è un allegato ma il l'allegato non viene consegnato.E-mail Android non invia file allegato

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...")); 

Qualche idea?

+0

Ho lo stesso problema con un'immagine, anche con il "file: //" all'inizio. Hai trovato un altro modo per farlo funzionare? – skamlet

+1

Ho trovato il problema, il mio file era privato, quindi l'applicazione di posta non poteva leggere il file. Ora funziona perfettamente – skamlet

+0

@ D4r7h Come hai reso il tuo file "non privato"? con 'file.SetReadable (true);' ?? Ho anche provato a spostare il file in ~ cartella, senza fortuna. Ho un file txt che viene inviato correttamente. Puoi darmi un suggerimento, pls? –

risposta

10

Ho capito, è necessario assicurarsi che il tuo uri ha "file: //" di fronte.

0

A partire dal livello API 24, non è possibile utilizzare gli URI "file: //" per il passaggio di file tra pacchetti. Invece, è necessario implementare FileProvider e passare il file utilizzandolo.

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

La cosa buona di FileProvides è che non è necessario il permesso WRITE_EXTERNAL_STORAGE (per livello di API 21 e sopra).

La descrizione migliore è another StackOverflow answer o in quella documentazione.