Enviar un mensaje de texto por teléfono usando SmsManager en Android

Este artículo trata sobre el envío de un SMS de texto por teléfono utilizando la clase SMSManager en una aplicación de Android. Para esto, se requiere un conocimiento básico de los fundamentos del desarrollo de aplicaciones de Android , la creación de un nuevo proyecto ,   la ejecución de una aplicación de Android ,   las vistas y el manejo de los botones de eventos de clic .

La clase SMSManager administra operaciones como enviar un mensaje de texto, un mensaje de datos y mensajes multimedia (MMS). Para enviar un mensaje de texto, el método sendTextMessage() se usa igualmente para mensajes multimedia   sendMultimediaMessage() y para mensajes de datos se usa el método sendDataMessage() . Los detalles de cada función son:

Función

Descripción

envíe mensaje de texto() sendTextMessage (String dirección de destino, 
string scAddress, string de texto, PendingIntent sentIntent,
 PendingIntent deliveryIntent, long messageId) 
enviarMensajeDeDatos() sendDataMessage (String dirección de destino, 
String scAddress, puerto de destino corto, byte [] datos,
 PendingIntent sentIntent, PendingIntent deliveryIntent)
enviarMensajeMultimean() sendMultimediaMessage(Context context, 
Uri contentUri, String locationUrl, 
Bundle configOverrides, PendingIntent sentIntent

A continuación se muestra un ejemplo de una aplicación básica que envía un mensaje de texto.
 

Acercarse:

 

Paso 1: Cree una nueva aplicación de Android.

Paso 2: Vaya a AndroidManifest.xml .

aplicación->Manifiesto->AndroidManifest.xml

 

Paso 3 : en AndroidManifest.xml agregue el permiso para enviar SMS. Permitirá que una aplicación de Android envíe SMS.

<usos-permiso android:name=” android.permission.SEND_SMS ” /> 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:dist="http://schemas.android.com/apk/distribution"
    package="com.example.gfg">
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <dist:module dist:instant="true" />
  
    <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">
        <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>

 
Paso 4: Abra activity_main.xml desde la siguiente dirección y agregue el siguiente código. Aquí, en un diseño lineal, se agregan dos textos de edición para tomar el número de teléfono y un mensaje de texto y un botón para enviar el mensaje.

aplicación->res->diseño->actividadprincipal.xml

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
    android:layout_marginTop="140dp"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
  
  
    <EditText
        android:id="@+id/editText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Enter number"
        android:inputType="textPersonName" />
  
    <EditText
        android:id="@+id/editText2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Enter message"
        android:inputType="textPersonName" />
  
    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:layout_marginLeft="60dp"
        android:layout_marginRight="60dp"
        android:text="SEND" />
</LinearLayout>

 
Paso 5: Abra MainActivity.java

aplicación->java->com.ejemplo.gfg->ActividadPrincipal

Cree objetos para las vistas utilizadas, es decir, editTexts y button. En el método onCreate, encuentre todas las vistas mediante el método findViewById() .
 

Objeto de tipo de vista =(ViewType)findViewById(R.id.IdOfView);

Dado que el botón Enviar es para enviar el mensaje, onClickListener se agrega con el botón. Ahora cree dos variables de string y almacene el valor del número de teléfono editText y el mensaje en ellas usando el método getText() (antes de asignarlas, conviértalas en una string usando el método toString() ). Ahora, en el bloque de prueba, cree una instancia de la clase SMSManager y obtenga el SMSManager asociado con la identificación de suscripción predeterminada. Ahora llama al método sendTextMessage() para enviar el mensaje.

SmsManager smsManager=SmsManager.getDefault();

smsManager.sendTextMessage(número,null,msg,null,null);

Luego muestre el mensaje del brindis como «Mensaje enviado» y cierre el bloque de prueba. Por último, en el bloque catch, se muestra un mensaje de brindis porque el mensaje no se envió si el compilador ejecuta este bloque del código.
 

MainActivity.java

package com.example.gfg;
  
import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
public class MainActivity extends AppCompatActivity {
    EditText phonenumber,message;
    Button send;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        send=findViewById(R.id.button);
        phonenumber=findViewById(R.id.editText);
        message=findViewById(R.id.editText2);
        send.setOnClickListener(new View.OnClickListener() {
  
            public void onClick(View view) {
                String number=phonenumber.getText().toString();
                String msg=message.getText().toString();
                try {
                    SmsManager smsManager=SmsManager.getDefault();
                    smsManager.sendTextMessage(number,null,msg,null,null);
                    Toast.makeText(getApplicationContext(),"Message Sent",Toast.LENGTH_LONG).show();
                }catch (Exception e)
                {
                    Toast.makeText(getApplicationContext(),"Some fiedls is Empty",Toast.LENGTH_LONG).show();
                }
            }
        });
    }
}

 

Nota: para ejecutar la aplicación en un dispositivo Android, habilite el permiso de SMS para la aplicación.

Goto permissions->SMS->YourApp and enable permission.

Producción:

enviando el mensaje

Mensaje enviado en la aplicación de mensajería

Publicación traducida automáticamente

Artículo escrito por pragatidhabhai y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *