Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_EMAIL, "[email protected]");
intent.putExtra(Intent.EXTRA_SUBJECT, "Subject");
intent.putExtra(Intent.EXTRA_TEXT, "I'm email body.");
startActivity(Intent.createChooser(intent, "Send Email"));
Le code ci-dessus ouvre une boîte de dialogue affichant les applications suivantes: - Bluetooth, Google Docs, Yahoo Mail, Gmail, Orkut, Skype etc.
En fait, je veux filtrer ces options de liste. Je souhaite afficher uniquement les applications liées aux e-mails, par exemple Gmail, Yahoo Mail. Comment faire?
J'ai vu un tel exemple sur l'application 'Android Market'.
- Ouvrez l'application Android Market
- Ouvrez n'importe quelle application où le développeur a spécifié son adresse e-mail. (Si vous ne trouvez pas une telle application, ouvrez simplement mon application: - market: // details? Id = com.becomputer06.vehicle.diary.free, OU recherchez par 'Vehicle Diary')
- Faites défiler jusqu'à «DÉVELOPPEUR»
- Cliquez sur «Envoyer un e-mail»
La boîte de dialogue affiche uniquement les applications de messagerie, par exemple Gmail, Yahoo Mail, etc. Elle n'affiche pas Bluetooth, Orkut, etc. Quel code produit une telle boîte de dialogue?
String[]
, pas seulement unString
comme indiqué ici.Réponses:
lorsque vous modifierez votre intention.setType comme ci-dessous, vous obtiendrez
Utilisez
android.content.Intent.ACTION_SENDTO
pour obtenir uniquement la liste des clients de messagerie, sans facebook ni autres applications. Juste les clients de messagerie. Ex:Je ne vous suggérerais pas d'accéder directement à l'application de messagerie. Laissez l'utilisateur choisir son application de messagerie préférée. Ne le contraignez pas.
Si vous utilisez ACTION_SENDTO, putExtra ne fonctionne pas pour ajouter un sujet et du texte à l'intention. Utilisez Uri pour ajouter le sujet et le corps du texte.
EDIT: Nous pouvons utiliser
message/rfc822
au lieu de"text/plain"
comme type MIME. Cependant, cela n'indique pas «ne proposer que des clients de messagerie» - cela indique «offrir tout ce qui prend en charge les données de message / rfc822». Cela pourrait facilement inclure certaines applications qui ne sont pas des clients de messagerie.message/rfc822
prend en charge les types MIME de.mhtml, .mht, .mime
la source
no apps installed to perform this intent
quand j'utiliseACTION_SENDTO
. J'utilise Android 4.1.2 et j'ai installé une application de messagerie ...message/rfc822
. Ce n'est pas la même chose que d'envoyer un e-mail. Utilisezmailto:
plutôt le protocole, car c'est ce que les clients de messagerie comprennent réellement.La réponse acceptée ne fonctionne pas sur le 4.1.2. Cela devrait fonctionner sur toutes les plateformes:
J'espère que cela t'aides.
Mise à jour: Selon marcwjj , il semble que sur 4.3, nous devons passer un tableau de chaînes au lieu d'une chaîne pour l'adresse e-mail pour le faire fonctionner. Nous devrons peut-être ajouter une ligne supplémentaire:
Lien de référence
la source
Uri.fromParts("mailto", "", null)
Il existe trois approches principales:
1. Personnalisé
Uri
:2. Utiliser des
Intent
extras:3. Bibliothèque de support
ShareCompat
:la source
%
symbole dans le tampon, certains caractères dans l'e-mail résultant ne seront pas correctement encodés. Vous devez exécuter laUri.encode
danse suggérée par @minipif.Ceci est cité dans le document officiel Android, je l'ai testé sur Android 4.4 et fonctionne parfaitement. Voir plus d'exemples sur https://developer.android.com/guide/components/intents-common.html#Email
la source
EXTRA_EMAIL
ne fonctionne pas pour moi, donc j'ai utiliséUri.parse("mailto: " + myEmail)
Une réponse tardive, bien que j'aie trouvé une solution qui pourrait aider les autres:
Version Java
Version Kotlin
C'était ma sortie (seulement Gmail + Inbox suggéré):
J'ai obtenu cette solution sur le site des développeurs Android .
la source
mailto
et l'e-mail:mailto:[email protected]
Cela fonctionne pour moi:
c'est-à-dire utiliser l'
ACTION_SENDTO
action plutôt que l'ACTION_SEND
action. Je l'ai essayé sur quelques appareils Android 4.4 et il limite la fenêtre contextuelle du sélecteur pour n'afficher que les applications de messagerie (e-mail, Gmail, Yahoo Mail, etc.) et il insère correctement l'adresse e-mail et l'objet dans l'e-mail.la source
Essayer:
la source
message/rfc822
. Ce n'est pas la même chose que d'envoyer un e-mail. Utilisezmailto:
plutôt le protocole, car c'est ce que les clients de messagerie comprennent réellement.C'est la bonne façon d'envoyer l'intention de l'e-mail en fonction de la documentation officielle du développeur Android
Ajoutez ces lignes de code à votre application:
Facultatif: ajoutez le corps et le sujet, comme ceci
Vous avez déjà ajouté cette ligne, mais c'est bien d'avoir pour les nouveaux utilisateurs
Ce sera l'adresse du destinataire, ce qui signifie que l'utilisateur vous enverra (le développeur) un e-mail.
la source
Enfin, trouvez la meilleure façon de faire
la source
Si vous ne souhaitez utiliser que les clients de messagerie, vous devez les utiliser
android.content.Intent.EXTRA_EMAIL
avec un tableau. Voici un exemple:la source
ACTION_SENDTO
Le code suivant fonctionne bien pour moi.
la source
De la documentation des développeurs Android :
la source
Edit: ne fonctionne plus avec les nouvelles versions de Gmail
C'était le seul moyen que j'ai trouvé à l'époque pour le faire fonctionner avec n'importe quel personnage.
La réponse de doreamon est la bonne façon de procéder maintenant, car elle fonctionne avec tous les personnages dans les nouvelles versions de Gmail.
Ancienne réponse:
Voici le mien. Il semble fonctionner sur toutes les versions d'Android, avec la prise en charge du sujet et du corps du message, et la prise en charge complète des caractères utf-8:
la source
Uri.encode
est la bonne façon de procéder. Mais pourquoi l'appeler deux fois pour sujet et corps?Aucune de ces solutions ne fonctionnait pour moi. Voici une solution minimale qui fonctionne sur Lollipop. Sur mon appareil, seuls Gmail et les applications de messagerie natives apparaissent dans la liste de sélection résultante.
la source
Fonctionne sur toutes les versions Android:
la source
Le code suivant a fonctionné pour moi !!
la source
Cela fonctionne parfaitement pour moi:
la source
Si vous souhaitez vous assurer que votre intention n'est gérée que par une application de messagerie (et non par d'autres applications de messagerie texte ou sociales), utilisez l'
ACTION_SENDTO
action et incluez le schéma de données "mailto:". Par exemple:J'ai trouvé cela dans https://developer.android.com/guide/components/intents-common.html#Email
la source
à Kotlin si quelqu'un cherche
la source
La plupart de ces réponses ne fonctionnent que pour un cas simple lorsque vous n'envoyez pas de pièce jointe . Dans mon cas, j'ai parfois besoin d'envoyer une pièce jointe (ACTION_SEND) ou deux pièces jointes (ACTION_SEND_MULTIPLE).
J'ai donc pris les meilleures approches de ce fil et les ai combinées. Il utilise la bibliothèque de support,
ShareCompat.IntentBuilder
mais je n'affiche que les applications qui correspondent à ACTION_SENDTO avec "mailto:" uri. De cette façon, je ne reçois que la liste des applications de messagerie avec prise en charge des pièces jointes:la source
L'utilisation
intent.setType("message/rfc822");
fonctionne, mais elle montre des applications supplémentaires qui ne gèrent pas nécessairement les e-mails (par exemple GDrive). UtiliserIntent.ACTION_SENDTO
avecsetType("text/plain")
est le meilleur, mais vous devez ajoutersetData(Uri.parse("mailto:"))
pour obtenir les meilleurs résultats (uniquement les applications de messagerie). Le code complet est le suivant:la source
Si vous souhaitez cibler Gmail, vous pouvez procéder comme suit. Notez que l'intention est "ACTION_SENDTO" et non "ACTION_SEND" et les champs d'intention supplémentaires ne sont pas nécessaires pour Gmail.
la source
Je mets à jour la réponse d'Adil dans Kotlin,
la source
Veuillez utiliser le code ci-dessous:
la source
Vous devriez peut-être essayer ceci:
intent.setType("plain/text");
Je l'ai trouvé ici . Je l'ai utilisé dans mon application et il n'affiche que les options E-Mail et Gmail.
la source
plain/text
, et ce n'est même pas un type MIME valide. Ce n'est pas la même chose que d'envoyer un e-mail. Utilisezmailto:
plutôt le protocole, car c'est ce que les clients de messagerie comprennent réellement.Composez un e-mail dans le client de messagerie du téléphone:
la source
Utilisez ceci:
utilisez build gradle:
la source
C'est ce que j'utilise, et ça marche pour moi:
Cela permettra également à l'utilisateur de choisir son application de messagerie préférée. La seule chose que cela ne vous permet pas de faire est de définir l'adresse e-mail du destinataire.
la source
"
sur la 2e ligne.la source
la source