web-dev-qa-db-fra.com

Android Intention d'envoyer un e-mail avec pièce jointe

Duplicata possible:
Courriel de la mémoire interne

Le courrier électronique est reçu par le destinataire, mais sans pièce jointe. Voici le code, tout expert sait où je me suis trompé?

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"});
intent.putExtra(Intent.EXTRA_SUBJECT, "subject here");
intent.putExtra(Intent.EXTRA_TEXT, "body text");
File root = Environment.getExternalStorageDirectory();
File file = new File(root, xmlFilename);
if (!file.exists() || !file.canRead()) {
    Toast.makeText(this, "Attachment Error", Toast.LENGTH_SHORT).show();
    finish();
    return;
}
Uri uri = Uri.parse("file://" + file);
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, "Send email..."));

Je ne reçois aucun message de toast. Merci.

64
Mr Jackson

Essayer:

Uri.fromFile(file);

au lieu de:

Uri.parse("file://" + file);

Essayez aussi text/xml pour votre type MIME, en supposant qu'il s'agit d'un fichier XML comme le suggère le nom de votre variable.

58
CommonsWare

Le fichier n'est probablement pas lisible dans le monde entier.

EDIT: en effet. Essayez de faire ceci:

Uri uri = Uri.parse("file://" + file.getAbsolutePath());
13
Femi