#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);
}
}
}
}