Está en la página 1de 5

Construye tu aplicacin de

mensajeria
Creado por jc mouse Martes, Noviembre 18, 2014
En este post crearemos una aplicacin sencilla para mandar
mensajes de texto desde android.
Necesitamos
IDE: Eclipse + SDK Android
Nivel: Bsico
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 ms.

2. Permisos
Para que el sistema permita a tu aplicacin hacer uso del
servicio de SMS debes agregar un permiso en tu
archivo AndroidManifest.xml, abrelo y aade
el android.permission.SEND_SMSantes 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 cdigo:
<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 tambin el archivo strings.xml que se encuentra
en RES/VALUES/ y aade las siguientes lineas de cdigo:
<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 cdigo 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 aplicacin y listo para enviar sms