2010-06-28 6 views
3

J'ai une application qui a deux boutons - un pour l'email & un pour SMS. Selon le bouton pressé, je veux envoyer un e-mail ou envoyer un SMS par SMS. J'ai codé le bouton d'email et cela fonctionne très bien. Le problème est que la boîte de dialogue qui s'affiche donne une option d'e-mail ou de messagerie le texte. Je veux séparer les deux, de sorte que lorsque l'utilisateur appuie sur e-mail, seules les options de messagerie sont là, et lorsque l'utilisateur appuie sur SMS, seule l'option Messagerie est disponible.Android: Intentions distinctes pour e-mail et SMS

Voici le code que j'ai essayé.

private void sendEmail(){ 
    Intent i = new Intent(Intent.ACTION_SEND); 
    i.setType("text/plain"); 
    i.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); 
    i.putExtra(Intent.EXTRA_SUBJECT, "Subject of the message"); 
    i.putExtra(Intent.EXTRA_TEXT , "Body of the message"); 
    try { 
     startActivity(Intent.createChooser(i, "Send mail...")); 
    } catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(this, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
    } 
} 

Fondamentalement, il semble y avoir une intention unique Intent.ACTION_SEND pour les e-mails & messagerie.

Un moyen de les séparer?

Répondre

5

Vous pouvez lancer l'application de messagerie avec un message prérempli comme ceci:

Intent sendIntent = new Intent(Intent.ACTION_VIEW); 
sendIntent.putExtra("sms_body", "The SMS text"); 
sendIntent.setType("vnd.android-dir/mms-sms"); 
startActivity(sendIntent); 

ou quelque chose comme ça juste l'envoyer tout de suite, sans présenter l'application de messagerie:

Uri uri = Uri.parse("smsto:0800000123"); 
Intent it = new Intent(Intent.ACTION_SENDTO, uri); 
it.putExtra("sms_body", "The SMS text"); 
startActivity(it); 
+0

J'ai utilisé le premier (puisque je voulais lancer l'ap p pour donner à l'utilisateur la possibilité d'éditer le texte). Cela fonctionne très bien! Tout comme vous utilisez "vnd.android-dir/mms-sms" pour setType for SMS, connaissez-vous la chaîne à utiliser pour l'envoi de courrier électronique uniquement? – OceanBlue

-3

Chaîne à utiliser pour envoyer des courriels seulement est:

email.setType("message/rfc822");