问题描述
我有以下意图-
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 :"));