web-dev-qa-db-fra.com

ACTION_SENDTO pour l'envoi d'un e-mail

Je rencontre la condition d'erreur "Cette action n'est pas prise en charge actuellement" lorsque j'exécute l'extrait de code suivant dans Android 2.1. Quel est le problème avec l'extrait de code?

public void onClick(View v) {
  Intent intent = new Intent(Intent.ACTION_SENDTO);
  Uri uri = Uri.parse("mailto:[email protected]");
  intent.setData(uri);
  intent.putExtra("subject", "my subject");
  intent.putExtra("body", "my message");
  startActivity(intent);
}
32
Sang Shin

Si vous utilisez ACTION_SENDTO, putExtra() ne fonctionne pas pour ajouter un sujet et du texte à l'intention. Utilisez setData() et l'outil Uri ajoutez le sujet et le texte.

Cet exemple fonctionne pour moi:

// ACTION_SENDTO filters for email apps (discard bluetooth and others)
String uriText =
    "mailto:[email protected]" + 
    "?subject=" + Uri.encode("some subject text here") + 
    "&body=" + Uri.encode("some text here");

Uri uri = Uri.parse(uriText);

Intent sendIntent = new Intent(Intent.ACTION_SENDTO);
sendIntent.setData(uri);
startActivity(Intent.createChooser(sendIntent, "Send email")); 
80

En fait, j'ai trouvé un moyen de faire fonctionner les EXTRA. Ceci est une combinaison d'une réponse que j'ai trouvée ici concernant ACTION_SENDTO

http://www.coderanch.com/t/520651/Android/Mobile/no-application-perform-action-when

et quelque chose pour HTML que j'ai trouvé ici:

Comment envoyer un e-mail HTML (mais la variante de la façon d'utiliser ACTION_SENDTO dans ce message HTML n'a pas fonctionné pour moi - j'ai "l'action non prise en charge" que vous voyez)

    // works with blank mailId - user will have to fill in To: field
    String mailId="";
    // or can work with pre-filled-in To: field
// String mailId="[email protected]";
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, 
                                    Uri.fromParts("mailto",mailId, null)); 
emailIntent.putExtra(Android.content.Intent.EXTRA_SUBJECT, "Subject text here"); 
    // you can use simple text like this
// emailIntent.putExtra(Android.content.Intent.EXTRA_TEXT,"Body text here"); 
    // or get fancy with HTML like this
emailIntent.putExtra(
             Intent.EXTRA_TEXT,
             Html.fromHtml(new StringBuilder()
                 .append("<p><b>Some Content</b></p>")
                 .append("<a>http://www.google.com</a>")
                 .append("<small><p>More content</p></small>")
                 .toString())
             );
startActivity(Intent.createChooser(emailIntent, "Send email..."));
19
Andy Weinstein

Vous pouvez essayer celui-ci

 Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts(
            "mailto", emailID, null));
    emailIntent.putExtra(Intent.EXTRA_SUBJECT,
            Subject);
    emailIntent.putExtra(Intent.EXTRA_TEXT,
            Text);
    startActivity(Intent.createChooser(emailIntent, Choosertitle);

Ça marche pour moi

5
MPG