Передать тело смс в приложение смс по умолчанию - PullRequest
0 голосов
/ 27 июня 2018

Я нашел несколько тем об этом, но ни одна из них не работает для меня. Это мой код:

public void sendSMS (String number, String body) {
        Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("smsto:" + number));
        i.putExtra("abc", body);
        startActivity(i);
    }

Открывает стандартное приложение SMS и передает номер для отправки, но текст сообщения пуст. Я также попробовал это Uri.fromParts(body, number, null), но затем приложение просто вылетает.

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Попробуйте это

Intent smsIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber));
            smsIntent.putExtra("address", "12125551212");
            smsIntent.putExtra("sms_body","Body of Message");
            startActivity(smsIntent);
0 голосов
/ 27 июня 2018

Если вы хотите, чтобы ваше намерение обрабатывалось только приложением для обмена текстовыми сообщениями (а не другими приложениями для работы с электронной почтой или социальными приложениями), то используйте действие ACTION_SENDTO и включите схему данных "smsto:". Например:

  public void composeMmsMessage(String message, Uri attachment) {
        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setData(Uri.parse("smsto:"));  // This ensures only SMS apps respond
        intent.putExtra("sms_body", message);
        intent.putExtra(Intent.EXTRA_STREAM, attachment);
        if (intent.resolveActivity(getPackageManager()) != null) {
            startActivity(intent);
        }
    }
0 голосов
/ 27 июня 2018

Замените ваш код с кодом ниже. Вы не передаете правильные ключи, чтобы определить номер и текст сообщения для смс.

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber));     
intent.putExtra("sms_body", message); 
startActivity(intent);

Пожалуйста, прочитайте эту документацию для получения подробной информации. Составьте SMS / MMS-сообщение с приложением

...