Как мы можем использовать startActivityforResult() для намерения электронной почты?

Я использую намерение для отправки электронной почты с вложением, это нормально работает, я хочу получить этот результат намерения электронной почты, я уже использовал startActivityforResult(), но я не могу получить результат для намерения электронной почты, как мы можем использовать startActivityforResult() для намерения электронной почты?

Спасибо всем

Ответ 1

Вы не можете, это не часть API. Он возвращается после нажатия кнопки отправки, даже если он не отправлен

Ответ 2

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

Я сделаю "enter enter to continue" или что-то, если мне нужно.

В любом случае: первый фрагмент из основного класса записывает отчет в SDCard, а затем вызывает активность, которая будет отправлять электронную почту.

WriteReportToStorage();

Intent Emailreport = new Intent(bvsactivity.this, Emailreport.class);
startActivityForResult(Emailreport,emailreport_ran);

Далее, в классе emailreport мы делаем стандартный код отправки вложений электронной почты +:

public class Emailreport extends Activity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

final Intent email = new Intent(android.content.Intent.ACTION_SEND);
        email.setType("text/html

");
            email.putExtra(android.content.Intent.EXTRA_SUBJECT, "subject");
            email.putExtra(android.content.Intent.EXTRA_TEXT, "body");
            email.putExtra(android.content.Intent.EXTRA_STREAM, Uri.parse("file:/" +      Environment.getExternalStorageDirectory() + "//Report.html"));
            startActivity(Intent.createChooser(email, "Email:"));
        }

Наконец, вернемся в ваш "основной" класс, onactivityresult, который удаляет файл sdcard:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // Actions based on which menu item we chose.
        if (requestCode == emailreport_ran) {boolean deleted = reportfile.delete(); emailreport_ran = 1;}
        }
 }