En este post crearemos una aplicación sencilla para mandar mensajes de texto desde android.
Necesitamos
IDE: Eclipse + SDK Android
Nivel: Básico
Tiempo: 10 minutos
1. Crea un nuevo proyecto en Eclipse que llamaremos «Enviar SMS» 🙂 deja el MainActivity.java por defecto que te crea el IDE, no necesitaremos de otra clase más.
2. Permisos
Para que el sistema permita a tu aplicación hacer uso del servicio de SMS debes agregar un permiso en tu archivo AndroidManifest.xml, abrelo y añade el android.permission.SEND_SMS antes de la etiqueta application, de la siguiente manera:
<uses-permission android:name="android.permission.SEND_SMS"/> <application ...
3. Interfaz
Abre el archivo activity_main.xml que se encuentra en RES/LAYOUT/ y pega el siguiente código:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/str_para" /> <EditText android:id="@+id/txtPhone" android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:inputType="phone" > <requestFocus /> </EditText> <TextView android:id="@+id/textView2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="@string/str_mensaje" /> <EditText android:id="@+id/txtMsg" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:ems="10" android:inputType="textMultiLine" /> <Button android:id="@+id/btnSend" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="16dp" android:text="@string/str_enviar" /> </LinearLayout>
abre también el archivo strings.xml que se encuentra en RES/VALUES/ y añade las siguientes lineas de código:
<string name="str_para">Para:</string> <string name="str_mensaje">Escribir mensaje:</string> <string name="str_enviar">Enviar</string>
Guarda todo y tu interfaz ya esta lista
4. Codigo
Para terminar este tutorial, abre el archivo MainActivity.java y reemplaza el código de la clase con el siguiente:
import android.os.Bundle; import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.telephony.SmsManager; import android.view.Menu; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { EditText txtPhone; EditText txtMsg; Button btnSend; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); txtPhone = ((EditText)findViewById(R.id.txtPhone )); txtMsg = ((EditText)findViewById(R.id.txtMsg )); btnSend = ((Button)findViewById(R.id.btnSend )); btnSend.setOnClickListener( new View.OnClickListener() { public void onClick(View view) { PendingIntent sentIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, new Intent("SMS_SENT"), 0); registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { switch (getResultCode()){ case Activity.RESULT_OK: Toast.makeText(getApplicationContext(), "SMS enviado", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_GENERIC_FAILURE: Toast.makeText(getApplicationContext(), "No se pudo enviar SMS", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NO_SERVICE: Toast.makeText(getApplicationContext(), "Servicio no diponible", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_NULL_PDU: Toast.makeText(getApplicationContext(), "PDU (Protocol Data Unit) es NULL", Toast.LENGTH_SHORT).show(); break; case SmsManager.RESULT_ERROR_RADIO_OFF: Toast.makeText(getApplicationContext(), "Failed because radio was explicitly turned off", Toast.LENGTH_SHORT).show(); break; } } }, new IntentFilter("SMS_SENT")); SmsManager sms = SmsManager.getDefault(); if( txtPhone.getText().toString().length()> 0 && txtMsg.getText().toString().length()>0 ) { sms.sendTextMessage( txtPhone.getText().toString() , null, txtMsg.getText().toString() , sentIntent, null); } else { Toast.makeText(getApplicationContext(), "No se puede enviar, los datos son incorrectos", Toast.LENGTH_SHORT).show(); } }}); } @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; } }
Ejecuta la aplicación y listo para enviar sms
🙂
Me llego la siguiente duda por facebook que me pareció interesante: «Se quiere desarrollar una tabla en java que haga us[...]
En post anteriores vimos lo que son los parámetros IN y los parámetros OUT pero existe otro tipo de parámetro que es la[...]
La internacionalización permite a las aplicaciones adaptarse a los diferentes idiomas y regiones sin necesidad de cambio[...]
Un SGA «Sistema de Gestión de Almacenes» es un programa informático destinado a gestionar las entradas y salidas de pro[...]
Editar un documento PDF no es tan sencillo como editar un archivo de texto por ejemplo, para editar archivos PDFs necesi[...]
Las estructuras de control de Shell son muy parecidos a otras lenguajes de programación. Las estructuras disponibles en[...]