电子邮件意图不允许我仅过滤电子邮件应用程序并放入自定义标题

问题描述

我有以下意图-

binding.fragmentContactUsEmail.setonClickListener {
            val intent = Intent(Intent.ACTION_SEND).apply {
                type = "*/*"
                putExtra(Intent.EXTRA_EMAIL,EMAIL)
                putExtra(Intent.EXTRA_SUBJECT,"Team-It application Feedback")
            }
            if (intent.resolveActivity(requireActivity().packageManager) != null) {
                startActivity(intent)
            }
        }

确实确实打开了电子邮件意图。

问题是,当尝试使用来自developer.android.com的文档来过滤意图时-

fun composeEmail(addresses: Array<String>,subject: 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)
    }
    if (intent.resolveActivity(packageManager) != null) {
        startActivity(intent)
    }
}

if语句失败,例如我的设备中没有任何电子邮件应用程序,这是错误的,因为我确实有其中之一。

一个问题是我无法使Intent.EXTRA_EMAIL正常工作-它只是不添加应该发送到的电子邮件地址,因此将其留空。

我想念什么?

编辑-

尝试了评论中给我的解决方案后,我能够将电子邮件发送到某个地址,但是标题仍然无法工作。

这是我当前的代码-

binding.fragmentContactUsEmail.setonClickListener {
            val emailIntent = Intent(Intent.ACTION_SENDTO).apply {
                data = Uri.parse("mailto:${Constants.ApplicationContact@R_687_404[email protected]}")
                putExtra(Intent.EXTRA_SUBJECT,"Feedback for Team-It")
            }
            if (emailIntent.resolveActivity(requireActivity().packageManager) != null) {
                startActivity(Intent.createChooser(emailIntent,""))
            } else {
                Toast.makeText(requireContext(),getString(R.string.contact_us_fragment_no_email_applications),Toast.LENGTH_SHORT).show();
            }
        }

解决方法

尝试此代码:

  Intent email = new Intent(Intent.ACTION_SEND);  
                  email.putExtra(Intent.EXTRA_EMAIL,new String[]{ "to"});  
                  email.putExtra(Intent.EXTRA_SUBJECT,"subject");  
                  email.putExtra(Intent.EXTRA_TEXT,"hi..");  
       
                  //need this to prompts email client only  
                  email.setType("message/rfc822");  
       
                  startActivity(Intent.createChooser(email,"Choose an Email client :"));