Как отправлять SMS-сообщения в Android: подробное руководство с примерами кода

В разработке Android отправка SMS-сообщений — распространенная задача, позволяющая взаимодействовать с пользователями посредством текстовых сообщений. Однако существуют определенные разрешения и методы, которые необходимо правильно реализовать, чтобы обеспечить успешную доставку сообщений. В этой статье мы рассмотрим несколько способов отправки SMS-сообщений в Android, а также приведем примеры кода.

Метод 1: использование класса SMS Manager
Класс SMS Manager предоставляет простой способ отправки SMS-сообщений в Android. Вот пример того, как его использовать:

import android.telephony.SmsManager;
// ...
public void sendSMS(String phoneNumber, String message) {
    SmsManager smsManager = SmsManager.getDefault();
    smsManager.sendTextMessage(phoneNumber, null, message, null, null);
}

Метод 2: запрос разрешения SEND_SMS
Перед отправкой SMS-сообщений необходимо запросить разрешение SEND_SMSв файле AndroidManifest.xml. Добавьте в тег <manifest>следующую строку:

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

Метод 3: обработка разрешений во время выполнения
Начиная с Android 6.0 (Marshmallow) и более поздних версий необходимо явно обрабатывать разрешения во время выполнения. Вот пример того, как запросить разрешение SEND_SMSво время выполнения:

import android.Manifest;
import android.content.pm.PackageManager;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
public class MainActivity extends AppCompatActivity {
    private static final int PERMISSION_REQUEST_SEND_SMS = 123;
    // ...
    public void checkPermissionAndSendSMS() {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this,
                    new String[]{Manifest.permission.SEND_SMS},
                    PERMISSION_REQUEST_SEND_SMS);
        } else {
            sendSMS("1234567890", "Hello, World!");
        }
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == PERMISSION_REQUEST_SEND_SMS) {
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                sendSMS("1234567890", "Hello, World!");
            }
        }
    }
}

Метод 4. Использование службы шлюза SMS
Другой подход заключается в использовании службы шлюза SMS, которая предоставляет API для отправки SMS-сообщений. Эти службы часто требуют регистрации и могут иметь ограничения на использование. Вот пример использования Twilio SMS API:

import com.twilio.Twilio;
import com.twilio.rest.api.v2010.account.Message;
import com.twilio.type.PhoneNumber;
public class MainActivity {
    private static final String ACCOUNT_SID = "your_account_sid";
    private static final String AUTH_TOKEN = "your_auth_token";
    // ...
    public void sendSMS(String phoneNumber, String message) {
        Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
        Message.creator(new PhoneNumber(phoneNumber), new PhoneNumber("your_twilio_phone_number"), message).create();
    }
}

Отправка SMS-сообщений в Android – это мощная функция, позволяющая эффективно взаимодействовать с пользователями. Используя класс SMS Manager, правильно обрабатывая разрешения или используя службы SMS-шлюза, вы можете реализовать функции SMS в своих приложениях Android. Не забывайте правильно обращаться с разрешениями и выбирать метод, который лучше всего соответствует вашим требованиям.