Como enviar mensaje de texto en android studio

Buenas, como están hoy veremos como enviar mensajes, este es un nuevo tutorial, algo básico pero muy bien hecho, en donde se podrá ver como enviar mensajes de texto al celular hecho en andoid studio , Bien primero aclaro de que si bien es cierto este pequeño ejercicio podrás enviar mensajes de texto a cualquier celular, no es gratis siempre consumirá el saldo de tu celular. aclarado esto empezamos:

Como enviar mensaje de texto en android studio

Para este ejercicio en la parte gráfica solo necesitaremos, un botón, que nos permitirá enviar el mensaje cada ves que lo presionemos y se vera mas o menos así:
A este Button le pondremos de id btnEnviar y como texto ENVIAR

enviar mensajes de texto en android

Para los que tienen flojera insertar el botón les dejo en modo texto la parte gráfica:

activity_main

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnEnviar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="56dp"
        android:text="ENVIAR"
        android:textSize="18sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>

Ahora es momento de meterle mano al código empezaremos con nuestro acostumbrado MainActivity.java donde tendremos un pequeño método que nos permitirá el envió del mensaje:

MainActivity

import android.Manifest;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
    Button Enviar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Enviar = (Button)findViewById(R.id.btnEnviar);
        if(ActivityCompat.checkSelfPermission(
                MainActivity.this, Manifest.permission.SEND_SMS)
                  != PackageManager.PERMISSION_GRANTED&& ActivityCompat.checkSelfPermission(
                MainActivity.this,Manifest
                .permission.SEND_SMS)!= PackageManager.PERMISSION_GRANTED){
                 ActivityCompat.requestPermissions(MainActivity.this,new String[]
                { Manifest.permission.SEND_SMS,},1000);
        }else{
        };
        Enviar.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                enviarMensaje("INGRESA AQUI EL NUMERO DE TU MOVIL","Hola Soy ANDROFAST te estoy enviando un Mensaje");
            }
        });
    }
    private void enviarMensaje (String numero, String mensaje){
        try {
            SmsManager sms = SmsManager.getDefault();
            sms.sendTextMessage(numero,null,mensaje,null,null);
            Toast.makeText(getApplicationContext(), "Mensaje Enviado.", Toast.LENGTH_LONG).show();
        }
        catch (Exception e) {
            Toast.makeText(getApplicationContext(), "Mensaje no enviado, datos incorrectos.", Toast.LENGTH_LONG).show();
            e.printStackTrace();
        }
    }
}

Como se aprecia en el código hacemos la llamada en el botón Enviar al método enviarMensaje

Que debes cambiar?

fíjate la linea de código dentro del MainActivity

enviarMensaje("AQUI TU NUMERO DEL MOVIL","AQUI TU MENSAJE");

En la primeras comillas debes poner el numero de celular a donde enviaras el mensaje y en la segunda comillas reemplazas el Hola Soy Androit Facil…… por el mensaje que desees, recuerda que el formato de celular debe ir  solo el numero para evitar problemas, por ejemplo mi país es Perú y mi código es +51 entonces el numero correcto para que me llamen sera algo así +51956874521 pero en este caso el ejercicio solo necesita el numero sin código de localidad ni nada de eso entonces seria al como esto 956874521  ojo no es mi numero, por si acaso las ingenieras acosadoras je jej bien ahora solo debemos ingresar un permiso a nuestro AndroidManifest que seria el siguiente:

<uses-permission android:name="android.permission.SEND_SMS"></uses-permission>

Y debería quedar todo así.

AndroidManifest 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androfast.server.appmsnautomaticos">
    <uses-permission android:name="android.permission.SEND_SMS"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Bien y con eso terminamos, el mensaje que nos llegaría al celular seria algo así.

mensaje de teto en android

Ahora les dejo el enlace del ejercicio para su descarga:

21 comentarios en «Como enviar mensaje de texto en android studio»

  1. Hack 01

    No me envia los mensajes, no se si tendra que ver con el codigo de pais es 504, el numero lo escribo asi 50498878965, y me dice datos incorrectos, he probado tambien +50498878965 y ni aun asi me funciona.

  2. Android Facil Oficial

    Hola, primero te saldrá un mensaje diciendo si aceptas los términos,si aceptas se enviara normal, con respecto al numero ponlo sin códigos de localidad, por ejemplo mi país es +5198568956 pero no necesita código y deveria ir solamente así 98568956

  3. Anónimo

    hola soy nuevo en esto y quería saber si tenes idea si podría integrar el código por medio de un tag (tecnología nfc) para que envié un sms cada ves que lo hago comunicarse con el celular.

    cambiando la linea
    public void onClick(View v) {

    por :

    public void on(View v) {

    desde ya muchas gracias por tu tiempo

  4. THSmok

    Hola, excelente tutorial. Te hago una consulta.
    He descargado el código y este funciona perfectamente, pero siempre envía 4/5 mensajes SMS solo con presionar una vez el botón "BUTTON". Sabes que puede ser?
    Gracias.

  5. AndroFast

    Saludos, no investigado a fondo, pero lo probé en dos celulares, un lg de gama baja el cual se enviaban 2 mensajes a la vez y luego de un k10 y se envía los mensajes de forma normal, así que podría ser un tema de versión de S.O. del móvil.

  6. Julio César

    Hola AndroFast Saludos!
    Encontré buenísimo este desarrollo, de hecho lo replique para mis compañeros de curso al dejarlo como aviso de días importantes, sin embargo, quisiera saber si es posible que el mensaje sea enviado de forma automática y por cada cierto día, por ejemplo;
    Enviar el mensaje “Hola Amigos hoy es Lunes” y sea enviado de forma automática a las 06:00 AM de todos los días Lunes.
    Enviar el mensaje “Hola Amigos hoy es Martes” y sea enviado de forma automática a las 06:00 AM de todos los días Martes.
    y asi con los demás días?.

    Saludos.

  7. Yoselis

    Hola muy buen tutorial, descargue y probé tu código me funciono perfectamente, quisiera adaptarlo a un proyecto en el que estoy trabajando en el cual el usuario introduzca su número telefónico directamente desde un EditText y al accionar un botón el método para enviar el mensaje de texto se lleve a cabo, es decir que este no sea estático a solo un número telefónico. Quiera saber si tu código puede implementarse así como lo planteo?.

  8. Alexander

    Muchas gracias eres un genio, algunas cosas toca cambiarlas por el tiempo que fue hecho este post pero la base es lo importante y esta correcta, genial compartir el conocimiento un +1 sub más de su blog.

  9. Pericana

    Hola, estoy realizando una app en la cual se envia un sms al cumplirse cierta condición, el código de envío del sms es el siguiente:

    private void enviarSMS(String numero, String mensaje) {
    int mensajes;
    mensajes=Integer.parseInt(txtenviado.getText().toString());
    sms.sendTextMessage(numero, null, mensaje, null, null);
    mensajes++;
    txtenviado.setText(String.valueOf(mensajes));
    }

    Si asigno esta función a un botón y la ejecuto al pulsarlo, se envía un mensaje correctamente y se incrementa el contador de forma normal.

    Pero si llamo a la función desde otra, digamos que si un vehículo excede una velocidad, esta función avisa de que el vehículo está rebasando dicha velocidad enviando un sms, se ejecuta la función, el contador se incrementa en uno, pero envía 6/7 sms en lugar de uno. El tema es que el contador me indica que se ha ejecutado una vez, pero el sms se envia 6/7veces. Alguien tiene el mismo problema?

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

WhatsApp chat