Я нашел решение в документе .
Вам необходимо использовать mailto:
схему. Это позволяет вам открывать приложения электронной почты. Другими словами, все почтовые приложения должны иметь фильтр намерений со схемой для открытия вашего почтового приложения. Если вы не включите его, он не будет работать должным образом.
Пример в do c является лучшим примером.
fun composeEmail(addresses: Array<String>, subject: String, body: String) {
val intent = Intent(Intent.ACTION_SENDTO).apply {
data = Uri.parse("mailto:") // only email apps should handle this
putExtra(Intent.EXTRA_EMAIL, addresses)
putExtra(Intent.EXTRA_SUBJECT, subject)
putExtra(Intent.EXTRA_TEXT, body)
}
if (intent.resolveActivity(packageManager) != null) {
try {
startActivity(Intent.createChooser(intent, "Send mail...")))
} catch (ex: ActivityNotFoundException) {
Toast.makeText(this@MainActivity, "There are no email clients installed.", Toast.LENGTH_SHORT).show()
}
}
}
Использование:
composeEmail(arrayOf("youremail@gmail.com", subject, body)
Вы можете использовать startActivityForResult()
, если хотите выполнить некоторую работу после закрытия приложения электронной почты. (Однако вы не можете определить, был ли результат отправки успешным или нет, потому что ACTION_SENDTO и ACTION_SEND ничего не возвращают, что означает, что нет большой разницы с startActivity ().
Если вы хотите отправить электронное письмо на адрес более одного человека. Вы должны добавить больше людей в массив, поэтому метод composeEmail принимает массив. Здесь вы, возможно, захотите узнать различия между ACTION_SEND и ACTION_SENDTO . ACTION_SEND - с вложением, а ACTION_SENDTO - это без вложений. Если вы хотите несколько вложений, используйте ACTION_SEND_MULIPLE.