Android 电子邮件意图不会填充收件人

问题描述

我在 Android 中遇到电子邮件意图问题。

收件人字段未正确填充。

我的代码是这样的:

扩展.kt

// Returns a Mail Intent
fun requireMailIntent(subject: String,body: String) = Intent(Intent.ACTION_SENDTO).apply {
    data = Uri.parse("mailto:")
    putExtra(Intent.EXTRA_EMAIL,arrayOf("email@gmail.com"))
    putExtra(Intent.EXTRA_SUBJECT,subject)
    putExtra(Intent.EXTRA_TEXT,body)
}



/**
 *  Checks whether the intent has an app that can
 *  handle it.
 *  Should be called before starting an intent
**/
fun Intent.hasSuccessor(context: Context) = resolveActivity(context.packageManager) != null

片段.kt

// Submit button
    binding.ButtonSubmit.setonClickListener {
        val emailConstruct = constructEmail()
        val intent = requireMailIntent(emailConstruct.first,emailConstruct.second)
        if(intent.hasSuccessor(requireContext())){
            Log.v("INTENT_TEST","Launching Intent")
            startActivity(intent)
        }else{
            Log.v("INTENT_TEST","No app found")
        }
    }

private fun constructEmail(): Pair<String,String>{
    val subject = "MES :: Bug Report :: ${viewmodel.bugIdentified}"
    val message = "Below are the steps \n ${viewmodel.bugSteps}"

    return Pair(subject,message)
}

Manifest.xml

<!-- For basic package querying,ie browsers,email... -->
<uses-permission
    android:name="android.permission.QUERY_ALL_PACKAGES"
    tools:ignore="QueryAllPackagesPermission" />

摇篮

    // SDK Versions
    sdk_compiled_version = 30
    sdk_minimum_version = 24

    // Build tools
    build_tools = "29.0.3"

点击按钮后,Android 会向我显示应用选择器,但是当我点击 Gmail 时,除了收件人字段之外的所有内容都会填充。

有人可以帮忙吗?

解决方法

尝试使用 URI

val uriText = "mailto:contact@example.com" +
            "?subject=" + "your subject here" +
            "&body=" + body
    val uri = Uri.parse(uriText)
    val sendIntent = Intent(Intent.ACTION_SENDTO)
    sendIntent.data = uri
    startActivity(Intent.createChooser(sendIntent,"Send Email").addFlags(FLAG_ACTIVITY_NEW_TASK))