2010-09-23 9 views
3

J'essaie d'envoyer un pdf en pièce jointe d'Android. Voici le code:Comment ajouter une extension .pdf lors de l'envoi d'une pièce jointe depuis Android?

String[] mailto = {"[email protected]"}; 
Uri uri = Uri.parse("android.resource://com.mywebsite.sendemail/raw/mypdf"); 

Intent emailIntent = new Intent(Intent.ACTION_SEND); 
emailIntent.putExtra(Intent.EXTRA_EMAIL, mailto); 
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "My Subject"); 
emailIntent.putExtra(Intent.EXTRA_TEXT, "My Body"); 
emailIntent.setType("application/pdf"); 
emailIntent.putExtra(Intent.EXTRA_STREAM, uri); 

startActivity(Intent.createChooser(emailIntent, "Send email using:")); 

Maintenant, cela fonctionne, mais le problème est que la pièce jointe est appelée MyPDF au lieu de mypdf.pdf. Je n'arrive pas à comprendre comment l'envoyer avec son extension ... C'est ce dont j'ai besoin d'aide. Merci.

Répondre

2

Je ne suis pas convaincu de ce que vous voulez sera possible, puisque vous tirez le PDF à partir d'une ressource. Si vous copiez le PDF dans un fichier local (avec l'extension correcte) et l'envoyez, vous devriez obtenir l'extension dans le message résultant. Mais tout droit sorti de la ressource ... Je suppose qu'il n'y a aucun moyen d'ajouter l'extension.

+1

Merci Mark. J'ai été capable de résoudre le problème en copiant le fichier sur la carte SD, puis en utilisant Uri.fromFile. Je n'aime pas la solution car si la carte SD est manquante ou occupée, elle ne fonctionnera pas. J'ai mis une copie du pdf dans le répertoire/assets mais je n'ai pas réussi à le faire fonctionner avec Uri.fromFile ou Uri.parse. Vous ne savez pas pourquoi ... – nickfox

+0

Hmmm ... 'file: /// android_asset/mypdf.pdf' pourrait fonctionner. J'ai seulement utilisé cette syntaxe pour les choses dans ma propre application, cependant, pas pour passer à une autre application. – CommonsWare

+0

J'ai essayé 18 permutations différentes de fromFile et analyser, y compris en utilisant android_asset comme vous l'avez suggéré. Je me suis à peu près convaincu qu'il faut le lire sur la carte SD ... Ce qui est regrettable. C'est quelque chose qui pourrait vraiment être amélioré dans Android ... Voici l'uri que j'ai fini par utiliser pour lire de la carte: Uri uri = Uri.fromFile (nouveau fichier (Environment.getExternalStorageDirectory(), "mypdf.pdf")) ; – nickfox

1

Chaque fois que j'essaie d'utiliser la méthode .putExtra, il bloque toujours mon application avec un message "Force Close". Si j'utilise quelque chose comme: Chaîne mtUri = "mailto: [email protected]? Subject = Certains sujets & body = Certains textes &"; Intention intention = nouvelle intention (Intent.ACTION_SENDTO, Uri.parse (mtUri)); startActivity (intention);

Cela semble fonctionner correctement. J'ai toujours le problème de joindre un fichier et pourrait utiliser une aide pour la syntaxe "attachment = file: /// ...".

Merci,