Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Отправьте СМС, затем электронное письмо

Автор вопроса: Nate B.Ответов: 1

В настоящее время я разрабатываю приложение, в котором я могу отправлять SMS и электронную почту. Ничего страшного, это довольно легко сделать. Вот как я отправляю смс:

private void sendSms() {
    Log.i("", "SEND SMS");
    Intent intent = new Intent(Intent.ACTION_VIEW,
            Uri.parse("sms:123456789"));
    intent.putExtra("sms_body", "My message");
    startActivity( intent );
}

Вот мой код для отправки электронной почты:

private void sendEmail() {
    Log.i("", "SEND");
    Intent email = new Intent(Intent.ACTION_SEND);
    email.putExtra(Intent.EXTRA_EMAIL, "[email protected]");
    email.putExtra(Intent.EXTRA_SUBJECT, "Subject");
    email.putExtra(Intent.EXTRA_TEXT, "My body email");
    email.setType("message/rfc822");
    startActivity(Intent.createChooser(email, "Send an email:"));
}

По отдельности они отлично работают.

Но я хочу отправить свою электронную почту, как только мое SMS будет отправлено или отменено. Я не могу найти, как вернуть событие закрытия SMS intent/activity для отправки электронного письма. Любая идея ?

  • Возможно, вам придется подождать, пока не завершится одно действие. rekire 16.11.2012
  • Можете ли вы завершить свой ответ? Я не понимаю, что вы имеете в виду. Nate B. 16.11.2012
  • Если я правильно понимаю, то вы вызываете обе функции друг за другом. Возможно, вам придется дождаться выхода из первого намерения, прежде чем вы начнете второе. Я мог представить, что вы переопределите первое намерение в стеке действий. rekire 16.11.2012

androidjavaemailsms

Ответы

Ответ 1 · рейтинг 2 · Robert Estivill

Вы должны использовать startActivityForResult при запуске такого рода действий.

Затем вы можете получить результат начатого действия, внедрив файл onActivityResult

Поток будет примерно следующим

1) startActivityForResult( SEND_SMS_INTENT, SEND_SMS_REQUEST_CODE), где SEND_SMS_REQUEST_CODE - целочисленная константа, определенная вами

2) Завершение действия по отправке смс (либо отменено, либо выполнено со своей работой)

3) onActivityResult будет вызывать активность вашего хоста с помощью SEND_SMS_REQUEST_CODE.

4) затем вы можете сделать if( requestCode == SEND_SMS_REQUEST_CODE ) sendEmail();

Вы можете сделать то же самое для действия отправки электронной почты.

Если вам интересно узнать, каким был результат дочерней активности (т. е. отправка смс отменена или действительно отправлена), вы можете использовать параметр результирующий код onActivityResult.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы