156 votes

lancer une application sms avec une intention

J'ai une question sur une intention... J'essaie de lancer l'application sms...

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setType("vnd.android-dir/mms-sms");
int flags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP |
    Intent.FLAG_ACTIVITY_CLEAR_TOP;
intent.setFlags(flags);
intent.setData(Uri.parse("content://sms/inbox"));
context.startActivity(intent);

donc, vous pouvez voir que je mets trop de choses dans mon intention, mais c'est parce que je ne sais pas comment faire... Merci.

1 votes

Checkout gist.github.com/gelldur/9c199654c91b13478979 Vous pouvez partager par l'application SMS

247voto

jqpubliq Points 7677

Pour lancer l'activité sms, tout ce dont vous avez besoin est ceci :

Intent sendIntent = new Intent(Intent.ACTION_VIEW);         
sendIntent.setData(Uri.parse("sms:"));

Vous pouvez ajouter des suppléments pour remplir votre propre message, comme ceci

sendIntent.putExtra("sms_body", x); 

alors il suffit de démarrer l'activité avec l'intention.

startActivity(sendIntent);

0 votes

J'ai essayé, mais lorsque j'écris exactement ce que vous donnez, la console d'eclipse renvoie (lors de la compilation) "No Launcher activity found !".

0 votes

Ok, avez-vous une activité avec les attributs suivants dans son filtre d'intention dans votre manifeste ? <action Android:name="Android.intent.action.MAIN" /> <category Android:name="Android.intent.category.LAUNCHER" />

0 votes

En fait, le lancement provient d'une activité de l'appwidget. Peut-être que ça vient d'ici, j'ai mis ce que vous avez fait dans le manifeste et rien ne se passe... J'ai testé mon bouton avec une autre fonction et celle-ci ne veut pas se déclencher !

143voto

Pratik Sharma Points 619
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", "12125551212");
smsIntent.putExtra("sms_body","Body of Message");
startActivity(smsIntent);

4 votes

La meilleure solution ! Merci !

0 votes

Superbe. C'est ce dont j'avais besoin. Le corps de l'adresse peut être vide.

21 votes

Attention, cela ne fonctionnera pas pour Android 4.4 et probablement plus... "vnd.Android-dir/mms-sms" n'est plus supporté

50voto

mustafaasevgi Points 26

Si la version d'Android est Kitkat ou supérieure, les utilisateurs peuvent changer l'application sms par défaut. Cette méthode permet d'obtenir l'application sms par défaut et de la lancer.

private void sendSMS() {    
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) // At least KitKat
      {
         String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(this); // Need to change the build to API 19

         Intent sendIntent = new Intent(Intent.ACTION_SEND);
         sendIntent.setType("text/plain");
         sendIntent.putExtra(Intent.EXTRA_TEXT, "text");

         if (defaultSmsPackageName != null)// Can be null in case that there is no default, then the user would be able to choose
         // any app that support this intent.
         {
            sendIntent.setPackage(defaultSmsPackageName);
         }
         startActivity(sendIntent);

      }
      else // For early versions, do what worked for you before.
      {
         Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW);
         smsIntent.setType("vnd.android-dir/mms-sms");
         smsIntent.putExtra("address","phoneNumber");         
         smsIntent.putExtra("sms_body","message");
         startActivity(smsIntent);
      }
   }

2 votes

J'utilise la version KitKat. Je veux définir le numéro du récepteur dans le champ To. Comment puis-je le faire ?

3 votes

@KarthikeyanVe pouvez-vous essayer ? Intent sendIntent = new Intent(Intent.ACTION_SENDTO) ; sendIntent.setData(Uri.parse("smsto:phonenumber")) ;

0 votes

J'ai essayé. Cela fonctionne bien. Mais lorsque je clique sur le bouton Retour de l'application Messages, mon application se ferme également. Si j'appuie sur le bouton retour de l'application Messages, l'application devrait revenir là où je l'ai laissée.

32voto

skyisle Points 466
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);

C'est tout ce dont vous avez besoin.

0 votes

Le code fonctionne sur Android 4.2.2, il ouvre la liste des sms. c'est ce dont j'ai besoin ! !!

18voto

jaydeepw Points 833

Voici le code qui ouvrira l'activité SMS pré-remplie avec le numéro de téléphone vers lequel le SMS doit être envoyé. auquel le SMS doit être envoyé. Cela fonctionne aussi bien sur l'émulateur que sur l'appareil. .

Intent smsIntent = new Intent(Intent.ACTION_SENDTO);
smsIntent.addCategory(Intent.CATEGORY_DEFAULT);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.setData(Uri.parse("sms:" + phoneNumber));
startActivity(smsIntent);

1 votes

Comment puis-je joindre une image à ce message ?

0 votes

J'ai une question à ce sujet, si on regarde le code du framework, setType() rend les données nulles et setData() rend le type nul. Alors comment le type persiste-t-il dans ce cas ?

0 votes

Comment changer la police du texte dans les sms ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X