Android - Enviar un SMS en 2 lineas de código
Enviar un SMS simple y sencillo puede hacerse en 2 lineas de código.
Ahora bien, ese código hará su mejor esfuerzo para enviarse, pero no nos enteraremos si el mensaje se envió o no, o cual es la motivo, que puede haber varios. De todas formas eso quizas ni nos interese ya que nuestro servicio corre en background y envía un SMS periodicamente, por ej. Si nos interesara conocer el estado del envió, deberiamos hacer uso de los PendingIntent, lo cual se detalla en el siguiente post.
Las 2 lineas de código en el contexto de una Activity:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX6fohYJhq4avfJHCdrxDYsfAczOAleuRIm5k-R6TI3q48_8w-6LeJr99DdOs0mOsCqqOdjYCwZoEBj3E3t2I3rSNbeXIv5PkSShbneHtP1Y5xjKPlUWQJwvMF2UqtkNRiCx5McSW3s48/s400/Fullscreen+capture+682012+85727+PM.jpg)
El proyecto de ejemplo queda disponible para descargar del siguiente link:
Descargar proyecto aquí.![](https://www.google.com/chart?chs=150x150&cht=qr&chl=http://android-developer-example-apps.googlecode.com/files/AndroidSMSSend.zip&chld=L|1&choe=UTF-8)
En el siguiente post se detallará el uso de los PendingIntent para conocer el resultado del envío del SMS.
SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage("003652145" /*String del teléfono*/ , null, "hola" /*String del cuerpo*/, null, null);Claro que es imprescindible indicar que la aplicación requiere del permiso para enviar sms, para eso agregamos en el manifest:
Ahora bien, ese código hará su mejor esfuerzo para enviarse, pero no nos enteraremos si el mensaje se envió o no, o cual es la motivo, que puede haber varios. De todas formas eso quizas ni nos interese ya que nuestro servicio corre en background y envía un SMS periodicamente, por ej. Si nos interesara conocer el estado del envió, deberiamos hacer uso de los PendingIntent, lo cual se detalla en el siguiente post.
Las 2 lineas de código en el contexto de una Activity:
package com.example.android.helloactivity; import android.app.Activity; import android.os.Bundle; import android.telephony.gsm.SmsManager; import android.view.View; import android.widget.Button; import android.widget.EditText; /** * A minimal "Hello, World!" application. */ public class HelloActivity extends Activity { public HelloActivity() { } /** * Called with the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set the layout for this activity. You can find it // in res/layout/hello_activity.xml setContentView(R.layout.main); Button botonEnviar = (Button)this.findViewById(R.id.button_send); botonEnviar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { String address = ((EditText) findViewById(R.id.editTextTelefono)) .getText().toString(); String body = ((EditText) findViewById(R.id.editTextCuerpoSms)) .getText().toString(); sendSMS(address, body); } }); } private void sendSMS(String address, String body){ try { SmsManager smsManager = SmsManager.getDefault(); smsManager.sendTextMessage(address, null, body, null, null); } catch (Exception e) { e.printStackTrace(); } } }Probando el envío de sms con esta aplicación entre dos dispositivos virtuales:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhX6fohYJhq4avfJHCdrxDYsfAczOAleuRIm5k-R6TI3q48_8w-6LeJr99DdOs0mOsCqqOdjYCwZoEBj3E3t2I3rSNbeXIv5PkSShbneHtP1Y5xjKPlUWQJwvMF2UqtkNRiCx5McSW3s48/s400/Fullscreen+capture+682012+85727+PM.jpg)
El proyecto de ejemplo queda disponible para descargar del siguiente link:
Descargar proyecto aquí.
En el siguiente post se detallará el uso de los PendingIntent para conocer el resultado del envío del SMS.
Se podría hacer esto mismo pero con Whatts Up?
ReplyDeletehay algún código por el cual puedo tirar las ordenadas de gps a través de un mensaje de texto. explico mi situación. quiero gravar una tarjeta rfid con un código la cual al apoyarla en un celular con tecnología nfc me envié las coordenadas a un numero pre cargado. si esto es posible me gustaría hablar por email. desde ya muchas gracias.
ReplyDelete