有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java安卓12 ACTION_SENDTO intent额外异常的原因是什么?

在Android 12中,如果在使用ACTION_SENDTO发送文本电子邮件时添加信息,如主题EXTRA_SUBJECT)和消息EXTRA_TEXT),这些信息不会出现在电子邮件客户端消息中,与之前的所有版本相反

类似Kotlin question中的用户似乎已通过以下方式使用apply selector解决了问题:

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) 个答案

  1. # 1 楼答案

    these don't appear in the email client message, contrarely to all previous versions

    应用程序如何处理入站附加服务取决于应用程序的开发人员。而且,既然^{} is not documented to have those extras,当应用程序忽略这些额外功能时,你不应该感到惊讶

    What is the proper way to fix the issue in Java?

    如果ACTION_SEND对你有用,就做你在科特林的事情^无论在Java、Kotlin或任何其他合适的编程语言中使用,{}的工作方式都是相同的。您的选择器将把Intent限制为具有支持mailto:UriACTION_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;
    }