Trivial: получить подтверждение по электронной почте отправлено в Android - PullRequest
8 голосов
/ 29 марта 2011

После запуска электронной почты, как я могу получить подтверждение, что электронное письмо отправлено или произошла ошибка в операции, из которой оно было вызвано?

        Intent emailIntent = new Intent(Intent.ACTION_SEND);
        emailIntent.setType("png/image");

        String subject = "Email Subject";

        String body = "Message Body"; 

        emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
        emailIntent.putExtra(Intent.EXTRA_TEXT, body);
        emailIntent.putExtra(Intent.EXTRA_STREAM,
                Uri.parse("file:///sdcard/" + IMAGE_FILENAME));

        startActivity(Intent.createChooser(emailIntent, "Send email...")); 

        //Here I need to do something on a successfully sent email

Может быть, начать деятельность ForResult? Но какого результата мне ожидать, если таковой будет?

Ответы [ 4 ]

12 голосов
/ 29 марта 2011

Это действительно зависит от приложения, которое запускается вашим Intent. Это может быть приложение Gmail, приложение электронной почты или любое стороннее приложение. Из-за этого нет 100% надежного способа определить, действительно ли пользователь нажал Отправить или нет.

Единственное, что вы можете сделать, - это проверить, возвращают ли приложения Gmail и электронной почты что-либо релевантное при вызове через startActivityForResult, и полагаться на это. Но будьте осторожны, это ненадежно, потому что, опять же, могут быть сторонние приложения. Кроме того, поскольку эти приложения не указывают публично, что они возвращают, они могут изменить это в какой-то момент без какого-либо уведомления.

3 голосов
/ 23 февраля 2013

Вы не можете получить какой-либо полезный код результата из намерения по электронной почте. onActivityResult всегда возвращает 0, как только отправка начинается или отправка отменяется.

Дополнительно, если вы прикрепляете файлы, onActivityResult вызывается ДО того, как эти файлы будут прочитаны.

1 голос
/ 22 апреля 2014

Вы НЕ МОЖЕТЕ сделать это.

ACTION_SEND НЕ имеет выходных данных, в результате вы всегда получаете значение по умолчанию RESULT_CANCELED.

Также вы НЕ МОЖЕТЕ проверять его при поступлении данных Intentназад, потому что это всегда ноль или отправлять почту или отбрасывать.

0 голосов
/ 29 марта 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...