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

В настоящее время я разрабатываю приложение, в котором я могу отправлять 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 для отправки электронного письма. Любая идея ?


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


Ответы (1)


Вы должны использовать 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.

person Robert Estivill    schedule 16.11.2012
comment
Большое спасибо. Очень простой. Я застрял в «Обработке событий», как это делает С#. Спасибо. - person Nate B.; 16.11.2012