问题描述
我在 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))