前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

Android:Email送信時にEXTRA_SUBJECT、EXTRA_TEXTが反映されない

課題

これまで以下のような感じでメールを送信していたが、いつ頃からか'EXTRA_SUBJECT', 'EXTRA_TEXT'がGmailにセットされなくなった。

/**
 * メール送信用Intentを生成する
 */
fun getMailIntent(mailTo: String, subject: String, body: String): Intent {
    val intent =
        Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:$mailTo"))
    intent.putExtra(Intent.EXTRA_SUBJECT, subject)
    intent.putExtra(Intent.EXTRA_TEXT, body)
    return intent
}

対応

Gmailのどこかのアップデートで EXTRA_EMAIL が必要になった模様。 ついでに公式サイトを参考にmailto:の記述もリファクタする。 applyはまだ使い慣れてないけどすっきり書けて良いね。

/**
 * メール送信用Intentを生成する
 */
fun getMailIntent(mailTo: String, subject: String, body: String): Intent {
    return Intent(Intent.ACTION_SENDTO)
        .apply {
            data = Uri.parse("mailto:")
            putExtra(Intent.EXTRA_EMAIL, arrayOf(mailTo))
            putExtra(Intent.EXTRA_SUBJECT, subject)
            putExtra(Intent.EXTRA_TEXT, body)
        }
}

なんとなくGmail以外のメーラーが起動しないような気がする...。

参考

developer.android.com