【发布时间】:2020-03-15 11:28:46
【问题描述】:
我正在使用以下代码通过电子邮件意图发送我的应用程序反馈。在构建版本 28 之前它工作正常。但是在 Android 29 中,我在打开电子邮件应用程序期间没有得到主题和正文文本,它只显示到电子邮件地址而不显示其他文本。我的代码如下所示
String appName = getResources().getString(R.string.app_name);
int versionCode = BuildConfig.VERSION_CODE;
String versionName = BuildConfig.VERSION_NAME;
String deviceInfo = "Device Info:";
deviceInfo += "\n OS Version: " + System.getProperty("os.version") + "(" + android.os.Build.VERSION.INCREMENTAL + ")";
deviceInfo += "\n OS API Level: " + android.os.Build.VERSION.SDK_INT;
deviceInfo += "\n Device: " + android.os.Build.DEVICE;
deviceInfo += "\n Model (and Product): " + android.os.Build.MODEL + " (" + android.os.Build.PRODUCT + ")";
deviceInfo += "\n App Version Code: " + versionCode;
deviceInfo += "\n App Version Name: " + versionName;
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "myemail@gmail.com", null));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, appName + " Problem");
emailIntent.putExtra(Intent.EXTRA_TEXT, "write your issue here \n\n\n______________________________\n\n" + deviceInfo);
startActivity(Intent.createChooser(emailIntent, "Send email..."));
我在 logcat 中没有收到任何错误。让我知道是否有人可以帮助我解决问题。 谢谢!
【问题讨论】:
-
自从neither
EXTRA_SUBJECTnorEXTRA_TEXTare documented to be supported byACTION_SENDTO,我不知道你为什么期望它在电子邮件客户端上可靠地工作。任何给定的应用程序是否希望尝试处理未记录的额外内容取决于该应用程序的开发人员。 -
@CommonsWare 感谢您的评论和指出。正如我所说,它在我的一个构建版本到 28 的应用程序中运行良好。我在 29.0.2 中遇到问题谢谢!
-
@CommonsWare 你可以看到EXTRA_SUBJECT here
-
“正如我所说的那样,它在我的一个构建版本为 28 的应用程序中运行良好”——并非如此。有几十个(如果不是几百个)应用程序可供用户选择回复
ACTION_SENDTO以获得mailto:Uri。没有人必须尊重那些无证的临时演员。 “您可以在此处看到 EXTRA_SUBJECT”——您在ACTION_SENDTO的文档中看不到EXTRA_SUBJECThere。任何ACTION_SENDTO应用程序都不必尊重额外的内容。 -
当然欢迎您将
EXTRA_SUBJECT包含在您的ACTION_SENDTOIntent中。许多应用程序会忽略它,您将不得不学会忍受这种限制。如果您使用ACTION_SEND而不是ACTION_SENDTO,那么EXTRA_SUBJECT应该可以工作。即使这样,有缺陷的应用程序也可能会忽略它。