Опция получателя электронной почты в приложении Android не работает

#java #android

#java #Android

Вопрос:

Я использую следующий пример, чтобы попытаться отправить электронное письмо конкретному получателю.

https://developer.android.com/guide/components/intents-common.html#Email

Появится почтовый клиент, но поле Кому: пусто…есть мысли?

Согласно документации на вышеупомянутой веб-странице, которую я упомянул, EXTRA_EMAIL заполняет адрес электронной почты получателя

Намерение.EXTRA_EMAIL — строковый массив всех адресов электронной почты получателей «Кому».

Вот код

  Intent intent = new Intent(Intent.ACTION_SENDTO);
                intent.setData(Uri.parse("mailto:")); // only email apps should handle this
                intent.putExtra(Intent.EXTRA_EMAIL, "testemail@gmail.com");
                intent.putExtra(Intent.EXTRA_SUBJECT, "Title of the email");
                if (intent.resolveActivity(getPackageManager()) != null) {
                    startActivity(intent);
                }
  

Ответ №1:

Адрес должен быть строковым массивом:

 intent.putExtra(Intent.EXTRA_EMAIL, new String[] { "me@somewhere.com" });
  

Комментарии:

1. Спасибо. Я только что понял это, увидев ваш ответ.

Ответ №2:

Обратите внимание, что ACTION_SENDTO само по себе не документировано для поддержки EXTRA_EMAIL или EXTRA_SUBJECT . ИМХО, более безопасный подход заключается в mailto: правильном использовании:

             Intent intent = new Intent(Intent.ACTION_SENDTO);
            intent.setData(Uri.parse("mailto:testemail@gmail.com"));
  

Ответ №3:

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

 public class EmailComposer {

    private Activity activity;
    private String subject;
    private String[] addresses;

    public EmailComposer(Activity activity, String subject, String[] addresses) {
        this.activity = activity;
        this.subject = subject;
        this.addresses = addresses;

    }

    public void composeEmail() {
        Intent intent = new Intent(Intent.ACTION_SENDTO);
        intent.setData(Uri.parse("mailto:")); // only email apps should handle this
        intent.putExtra(Intent.EXTRA_EMAIL, addresses);
        intent.putExtra(Intent.EXTRA_SUBJECT, subject);
        if(activity!=null) {
            if (intent.resolveActivity(activity.getPackageManager()) != null) {
                activity.startActivity(intent);
            }
        }
    }
}