Sending an email with attachments programmatically on Android

前端 未结 3 1745
遇见更好的自我
遇见更好的自我 2020-12-09 10:17

I wish to implement a button that upon pressing it will open the default email client with an attachment file.

I am following this, but am getting an error message o

3条回答
  •  清歌不尽
    2020-12-09 10:39

    For newer devices you will encounter FileUriExposedException. Here is how to avoid it in Kotlin.

    val file = File(Environment.getExternalStorageDirectory(), "this")
    val authority = context.packageName + ".provider"
    val uri = FileProvider.getUriForFile(context, authority, file)
    val emailIntent = createEmailIntent(uri)
    startActivity(Intent.createChooser(emailIntent, "Send email..."))
    
    private fun createEmailIntent(attachmentUri: Uri): Intent {
        val emailIntent = Intent(Intent.ACTION_SEND)
        emailIntent.type = "vnd.android.cursor.dir/email"
        val to = arrayOf("some@email.com")
        emailIntent.putExtra(Intent.EXTRA_EMAIL, to)
        emailIntent.putExtra(Intent.EXTRA_STREAM, attachmentUri)
        emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject")
        return emailIntent
    }
    

提交回复
热议问题