Envoyer un SMS sur Android

Je veux envoyer des sms

Quel est le but de l’envoi de SMS … ou de tout autre code? Je veux afficher la vue sms avec mon texte prédéfini en passant dans le champ message.

Y a-t-il une aide pour cela?

Vous pouvez utiliser le code suivant:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber))); 

Assurez-vous de définir phoneNumber sur le numéro de téléphone auquel vous souhaitez envoyer le message.

Vous pouvez append un message au SMS avec (des commentaires):

 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber)); intent.putExtra("sms_body", message); startActivity(intent); 

Cela a fonctionné pour moi.

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btnSendSMS = (Button) findViewById(R.id.btnSendSMS); btnSendSMS.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { sendSMS("5556", "Hi You got a message!"); /*here i can send message to emulator 5556. In Real device *you can change number*/ } }); } //Sends an SMS message to another device private void sendSMS(Ssortingng phoneNumber, Ssortingng message) { SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null, message, null, null); } 

Vous pouvez append cette ligne dans AndroidManifest.xml

  

Regardez ça

Cela peut être utile pour vous.

Essayez le code ci-dessous, puis appelez sendSMS("99999999999", "message"); pour envoyer des sms dans le numéro désiré.

 //---sends an SMS message to another device--- @SuppressWarnings("deprecation") private void sendSMS(Ssortingng phoneNumber, Ssortingng message) { Log.v("phoneNumber",phoneNumber); Log.v("MEssage",message); PendingIntent pi = PendingIntent.getActivity(this, 0, new Intent(this, **DummyClasshere.class**), 0); SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage(phoneNumber, null, message, pi, null); } 

Veuillez placer la permission suivante dans le fichier AndroidManifest.xml .

  

J’espère que cela pourrait aider.

Mise à jour À partir du commentaire: DummyClasshere.class est une activité sans processus ni classe dans laquelle vous devez naviguer.

Vous pouvez utiliser Object.class à la place de DummyClasshere.class.

Cela fonctionnera sans aucun doute. Dans ce cas, envoyez un message sans utiliser d’intention.

 SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage("Phone Number", null, "Message", null, null); 

Ce code est utilisé pour envoyer un message en arrière-plan (ne pas afficher le composeur du message) , il peut également fonctionner dans le récepteur de diffusion . Si vous souhaitez envoyer un message à partir du récepteur de diffusion.

   

Dans Android, nous avons la classe SmsManager qui gère les opérations SMS telles que l’envoi de données, de texte et de messages SMS pdu. Obtenez cet object en appelant la méthode statique SmsManager.getDefault ().

SmadManager Javadoc

Consultez le lien suivant pour obtenir le code exemple pour l’envoi de SMS:

article sur l’envoi et la réception de messages SMS sous Android

J’espère que ce code vous aide 🙂

 public class MainActivity extends Activity { private int mMessageSentParts; private int mMessageSentTotalParts; private int mMessageSentCount; Ssortingng SENT = "SMS_SENT"; Ssortingng DELIVERED = "SMS_DELIVERED"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button button=(Button)findViewById(R.id.button1); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Ssortingng phoneNumber = "0000000000"; Ssortingng message = "Hello World!"; sendSMS(phoneNumber,message); } }); } public void sendSMS(Ssortingng phoneNumber,Ssortingng message) { SmsManager smsManager = SmsManager.getDefault(); Ssortingng SENT = "SMS_SENT"; Ssortingng DELIVERED = "SMS_DELIVERED"; SmsManager sms = SmsManager.getDefault(); ArrayList parts = sms.divideMessage(message); int messageCount = parts.size(); Log.i("Message Count", "Message Count: " + messageCount); ArrayList deliveryIntents = new ArrayList(); ArrayList sentIntents = new ArrayList(); PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0); PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0); for (int j = 0; j < messageCount; j++) { sentIntents.add(sentPI); deliveryIntents.add(deliveredPI); } // ---when the SMS has been sent--- registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "SMS sent", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: Toast.makeText(getBaseContext(), "Generic failure", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: Toast.makeText(getBaseContext(), "No service", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: Toast.makeText(getBaseContext(), "Null PDU", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: Toast.makeText(getBaseContext(), "Radio off", Toast.LENGTH_SHORT).show(); break; } } }, new IntentFilter(SENT)); // ---when the SMS has been delivered--- registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context arg0, Intent arg1) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(getBaseContext(), "SMS delivered", Toast.LENGTH_SHORT).show(); break; case Activity.RESULT_CANCELED: Toast.makeText(getBaseContext(), "SMS not delivered", Toast.LENGTH_SHORT).show(); break; } } }, new IntentFilter(DELIVERED)); smsManager.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); /* sms.sendMultipartTextMessage(phoneNumber, null, parts, sentIntents, deliveryIntents); */ } } 

J’ajoute ma méthode SMS si cela peut aider quelqu’un. Soyez prudent avec smsManager.sendTextMessage, si le texte est trop long, le message ne disparaît pas. Vous devez respecter la longueur maximale en fonction de l’encodage. Plus d’informations ici SMS Manager envoie un message mutlipart lorsqu’il y a moins de 160 caractères

// UTILISER EveryWhere

 SMSUtils.sendSMS(context, phoneNumber, message); 

//Manifeste

          

//JAVA

 public class SMSUtils extends BroadcastReceiver { public static final Ssortingng SENT_SMS_ACTION_NAME = "SMS_SENT"; public static final Ssortingng DELIVERED_SMS_ACTION_NAME = "SMS_DELIVERED"; @Override public void onReceive(Context context, Intent intent) { //Detect l'envoie de sms if (intent.getAction().equals(SENT_SMS_ACTION_NAME)) { switch (getResultCode()) { case Activity.RESULT_OK: // Sms sent Toast.makeText(context, context.getSsortingng(R.ssortingng.sms_send), Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: // generic failure Toast.makeText(context, context.getSsortingng(R.ssortingng.sms_not_send), Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: // No service Toast.makeText(context, context.getSsortingng(R.ssortingng.sms_not_send_no_service), Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: // null pdu Toast.makeText(context, context.getSsortingng(R.ssortingng.sms_not_send), Toast.LENGTH_LONG).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: //Radio off Toast.makeText(context, context.getSsortingng(R.ssortingng.sms_not_send_no_radio), Toast.LENGTH_LONG).show(); break; } } //detect la reception d'un sms else if (intent.getAction().equals(DELIVERED_SMS_ACTION_NAME)) { switch (getResultCode()) { case Activity.RESULT_OK: Toast.makeText(context, context.getSsortingng(R.ssortingng.sms_receive), Toast.LENGTH_LONG).show(); break; case Activity.RESULT_CANCELED: Toast.makeText(context, context.getSsortingng(R.ssortingng.sms_not_receive), Toast.LENGTH_LONG).show(); break; } } } /** * Test if device can send SMS * @param context * @return */ public static boolean canSendSMS(Context context) { return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY); } public static void sendSMS(final Context context, Ssortingng phoneNumber, Ssortingng message) { if (!canSendSMS(context)) { Toast.makeText(context, context.getSsortingng(R.ssortingng.cannot_send_sms), Toast.LENGTH_LONG).show(); return; } PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, new Intent(SENT_SMS_ACTION_NAME), 0); PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent(DELIVERED_SMS_ACTION_NAME), 0); final SMSUtils smsUtils = new SMSUtils(); //register for sending and delivery context.registerReceiver(smsUtils, new IntentFilter(SMSUtils.SENT_SMS_ACTION_NAME)); context.registerReceiver(smsUtils, new IntentFilter(DELIVERED_SMS_ACTION_NAME)); SmsManager sms = SmsManager.getDefault(); ArrayList parts = sms.divideMessage(message); ArrayList sendList = new ArrayList<>(); sendList.add(sentPI); ArrayList deliverList = new ArrayList<>(); deliverList.add(deliveredPI); sms.sendMultipartTextMessage(phoneNumber, null, parts, sendList, deliverList); //we unsubscribed in 10 seconds new Handler().postDelayed(new Runnable() { @Override public void run() { context.unregisterReceiver(smsUtils); } }, 10000); } } 
 Ssortingng phoneNumber = "0123456789"; Ssortingng message = "Hello World!"; SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(phoneNumber, null, message, null, null); 

Inclure l’autorisation suivante dans votre fichier AndroidManifest.xml

  

Une partie de ce qui est expliqué ci-dessus est uniquement destiné à placer un SMS dans un état «prêt à lancer». comme Senthil Mg a dit que vous pouvez utiliser le gestionnaire de sms pour envoyer le sms directement, mais SMSManager a été déplacé vers android.telephony.SmsManager

Je sais que ce n’est pas beaucoup plus d’informations, mais cela pourrait aider quelqu’un un jour.

J’espère que cela peut vous aider …

Nom de fichier = MainActivity.java

 import android.os.Bundle; import android.app.Activity; import android.telephony.SmsManager; import android.view.Menu; import android.view.inputmethod.InputMethodManager; import android.widget.*; import android.view.View.OnClickListener; import android.view.*; public class MainActivity extends Activity implements OnClickListener{ Button click; EditText txt; TextView txtvw; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); click = (Button)findViewById(R.id.button); txt = (EditText)findViewById(R.id.editText); txtvw = (TextView)findViewById(R.id.textView1); click.setOnClickListener(this); } @Override public void onClick(View v){ txt.setText(""); v = this.getCurrentFocus(); try{ SmsManager sms = SmsManager.getDefault(); sms.sendTextMessage("8017891398",null,"Sent from Android",null,null); } catch(Exception e){ txtvw.setText("Message not sent!"); } if(v != null){ InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(),0); } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } 

Ajoutez cette ligne dans AndroidManifest.xml

  

entrer la description de l'image ici

Cela permet d’envoyer un message texte via l’application existante. phoneNumber – est une chaîne. Si vous ne souhaitez pas spécifier de numéro de téléphone, utilisez une chaîne vide “”.

 Intent sendIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("smsto", phoneNumber, null)); sendIntent.putExtra("sms_body", "text message"); startActivity(sendIntent); 

Envoyer un SMS à partir de KitKat et ci-dessus: – AJOUTEZ cette autorisation dans votre AndroidManifest.xml

  

Vous devez également implémenter l’ autorisation d’exécution pour Marshmallow et Above Version.

AndroidManifest.xml

 < ?xml version="1.0" encoding="utf-8"?>              

Le code qui sera donné ci-dessous: –

activity_conversation_list.xml

    

ConversationListActivity.java

 public class ConversationListActivity extends FragmentActivity { /** * Whether or not the activity is in two-pane mode, ie running on a tablet * device. */ private int PERMISSIONS_REQUEST_RECEIVE_SMS = 130; private Button btn_send_sms; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_conversation_list); btn_send_sms = (Button) findViewById(R.id.btn_send_msg); btn_send_sms.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int hasSendSMSPermission = 0; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { hasSendSMSPermission = checkSelfPermission(Manifest.permission.SEND_SMS); if (hasSendSMSPermission != PackageManager.PERMISSION_GRANTED) { requestPermissions(new Ssortingng[]{Manifest.permission.SEND_SMS}, PERMISSIONS_REQUEST_RECEIVE_SMS); } else if (hasSendSMSPermission == PackageManager.PERMISSION_GRANTED) { Intent intent = new Intent(ConversationListActivity.this, ComposeSMSActivity.class); startActivity(intent); } }else{ Intent intent = new Intent(ConversationListActivity.this, ComposeSMSActivity.class); startActivity(intent); } } }); } } 

Ceci est le code pour la mise en page sms et pour l’envoi de SMS: –

activity_compose_sms.xml

    

fragment_compose_sms.xml

                     

ComposeSMSActivity.java

 public class ComposeSMSActivity extends Activity { Activity mActivity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_compose_sms); mActivity = this; if (savedInstanceState == null) { getFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()) .commit(); } getActionBar().setDisplayHomeAsUpEnabled(true); } public static class PlaceholderFragment extends Fragment { public PlaceholderFragment() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View rootView = inflater.inflate(R.layout.fragment_compose_sms, container, false); rootView.findViewById(R.id.composeButtonCancel).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { NavUtils.navigateUpTo(getActivity(), new Intent(getActivity(), ConversationListActivity.class)); } }); rootView.findViewById(R.id.composeButtonSend).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Ssortingng recipient = ((TextView) rootView.findViewById(R.id.composeEditTextTo)).getText().toSsortingng(); Ssortingng message = ((TextView) rootView.findViewById(R.id.composeEditTextMessage)).getText().toSsortingng(); SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(recipient, "ME", message, null, null); } }); return rootView; } } } 

C’est tout.

Vous pouvez l’utiliser pour envoyer des SMS à n’importe quel numéro.
Utilisez ceci en XML

  

Utilisez ceci dans la classe d’activité

  public void sendsms(View view) { Ssortingng phoneNumber = "+880xxxxxxxxxx"; Ssortingng message = "Welcome to sms"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber)); intent.putExtra("sms_body", message); startActivity(intent); } 

Besoin de l’autorisation SEND_SMS.

  

La seule chose qui a fonctionné pour moi est:

 Intent sendIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:"+phone_number)); sendIntent.putExtra("sms_body", message); startActivity(sendIntent);