Android 12 ACTION_SENDTO Intent 额外异常的原因是啥?
Posted
技术标签:
【中文标题】Android 12 ACTION_SENDTO Intent 额外异常的原因是啥?【英文标题】:What is the reason of Android 12 ACTION_SENDTO intent extra anomaly?Android 12 ACTION_SENDTO Intent 额外异常的原因是什么? 【发布时间】:2021-12-21 17:59:13 【问题描述】:在 android 12 中,如果您将信息添加为 主题(EXTRA_SUBJECT
) 和 消息(EXTRA_TEXT
),当您使用 ACTION_SENDTO
Intent 发送文本电子邮件时,这些不会出现在电子邮件客户端消息中,与所有以前的版本相反。
类似Kotlin question 的用户似乎已经通过这种方式使用应用选择器解决了问题:
private fun createIntent(
metadata: String
): Intent
return Intent(ACTION_SEND)
.putExtra(
EXTRA_EMAIL,
arrayOf(EMAIL)
)
.putExtra(
EXTRA_SUBJECT,
TITLE
)
.putExtra(
EXTRA_TEXT,
metadata
)
.apply
selector = Intent(ACTION_SENDTO).setData(Uri.parse("mailto:"))
这个问题的原因是什么?在 Java 中解决问题的正确方法是什么?
【问题讨论】:
【参考方案1】:与所有以前的版本相反,这些不会出现在电子邮件客户端消息中
应用如何处理入站额外内容取决于应用的开发者。而且,由于 ACTION_SENDTO
is not documented to have those extras,当应用忽略这些额外内容时,您不应该感到惊讶。
在 Java 中解决问题的正确方法是什么?
如果ACTION_SEND
适合您,请在 Kotlin 中做您所拥有的。 Intent
无论您在 Java、Kotlin 或任何其他合适的编程语言中使用它,其工作方式都相同。您的选择器会将您的Intent
限制为具有支持mailto:
Uri
for ACTION_SENDTO
的活动的应用程序(可能不仅仅是电子邮件应用程序)。
通过眼球,Java 等价物应该是这样的:
private Intent createIntent(String metadata)
Intent result = new Intent(ACTION_SEND)
.putExtra(
EXTRA_EMAIL,
new String[] EMAIL
)
.putExtra(
EXTRA_SUBJECT,
TITLE
)
.putExtra(
EXTRA_TEXT,
metadata
);
result.setSelector(new Intent(ACTION_SENDTO).setData(Uri.parse("mailto:")));
return result;
【讨论】:
以上是关于Android 12 ACTION_SENDTO Intent 额外异常的原因是啥?的主要内容,如果未能解决你的问题,请参考以下文章