Je voudrais envoyer un mail en utilisant les intents implicites, comme énoncé mais non développé dans le tuto.
Après avoir tourné en rond pendant un moment sur la toile je vois que beaucoup utilisent ACTION_SEND et beaucoup conseillent ACTION_SENDTO.
Avec SENDTO j'ai le message "No application can perform this action", même sur un téléphone réel Avec SEND ça demande quelle application lancer sans les filtrer (donc on me propose dropbox, calendrier, anki etc), et ce seulement si je suis en type text/plain, sinon j'ai pareil qu'avec sento. De plus, je n'ai jamais le champs "to" renseigné.
Voici le code que j'utilise (je développe en API 7, au cas où ce serait important) :
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
//emailIntent.setType("text/html");
emailIntent.setType("message/rfc822");
//emailIntent.setType("text/plain");
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { "big.developer@gmail.com", ""});
//emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, "superserie.developer@gmail.com");
emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Message application android");
emailIntent.putExtra(Intent.EXTRA_TITLE, "huh ?");
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Je suis le texte du message !");
//emailIntent.putExtra(Intent.EXTRA_HTML_TEXT, Html.fromHtml("<b>Je suis le html du message</b>"));
startActivity(Intent.createChooser(emailIntent, "Avec quelle application envoyer cet e-mail ?"));
2 petites questions donc :
Qu'est-ce qui cloche dans mon pauvre code ?
Quelle est la différence entre SEND et SENDTO ? Pourquoi google a-t-il décidé de faire 2 trucs séparés ?
Merci de votre aide !
EDIT : SUJET (presque) RESOLU
L'émulateur android 2.1 (Nexus One) ne fonctionne pas avec SendTo, aucune idée de pourquoi En essayant sur mon smartphone réel, Send marche parfaitement selon le code que j'utilise Le code dans le post ci-dessous de stackoverflow est deprecated, il faut rajouter un charset. il faut également gérer la transformation des espaces en + ce qui donne la ligne
"&body=" + URLEncoder.encode("Je suis le texte du message éé@\"### !", "UTF-8").replace("+", "%20");
Et là normalement tout va bien
Bon sinon ma question théorique persiste (mais je met résolu quand même) : quel intent est le plus adapté et pourquoi ?
Merci d'avoir répondu mais ça ne marche pas non plus...
J'ai copié-collé ce code, en modifiant juste le URLEncoder dont la méthode encode(String) est dépréciée au profit de encode(String, String) (on rajoute le charset), donc j'ai ajouté le paramètre "UTF-8" à chaque fois. Eclipse ne trouve aucune erreur, et même aucun warning.
Message d'android à la place du chooser : "Unsupported action, that action is not currently supported"
J'avoue que je ne comprend pas du tout...
EDIT : je viens d'essayer en exportant sur mon Nexus 4, ça marche très bien avec quelques bricolages, je corrige mon premier post, Sujet résolu^^
Une idée de pourquoi ça ne marche pas sur émulateur ?
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.