gpt4 book ai didi

Android 应用电子邮件附件未在 Gmail 应用中通过

转载 作者:行者123 更新时间:2023-11-29 01:03:56 25 4
gpt4 key购买 nike

我的应用程序创建一个 PDF 文件,将其保存在 context.getFilesDir() 中,并使用内容提供程序传递 URI 以启动电子邮件 Intent。我的实现适用于所有电子邮件应用程序 Gmail。

会发生什么情况是启动了新的电子邮件 Intent 并附加了 PDF,正确的名称和大小,但发送后,另一端未收到附件。只有电子邮件主题和正文。它在 gmail 有时 中确实有效(PDF 通过)。它似乎在大约 90% 的时间里不起作用。

编辑:

我已经尝试了所有可能的存储位置,甚至完全省略了内容提供者并保存到公共(public)文件夹。相同的结果。

似乎禁用用于发送电子邮件的帐户的 gmail 同步使其工作。所以它必须与gmail应用程序有关。

相关部分代码:

// Creating PDF
PdfDocument document = new PdfDocument();

...

// Writing to file
File file = new File(context.getFilesDir(), mFileName);

try {
FileOutputStream outputStream = new FileOutputStream(file);
document.writeTo(outputStream);
outputStream.close();
} catch (IOException e) {
e.printSackTrace();
}

Uri uri = FileProvider.getUriForFile(context, "com.redacted.redacted.fileprovider", file);

// Email intent
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");

// To
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{mEmail});

// Subject
intent.putExtra(Intent.EXTRA_SUBJECT, getEmailSubject());

// Attachment
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

// Launch intent
context.startActivity(Intent.createChooser(intent, "Sending PDF..."));

list

...
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.redacted.redacted.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/paths"/>
</provider>
...

xml/paths.xml

<?xml version="1.0" encoding="utf-8"?>
<paths>
<files-path name="name" path="/" />
</paths>

我相信一切都正确实现,因为它在收件箱、三星邮件应用程序和其他电子邮件应用程序中工作。只是 Gmail,当它发送到之前收到附件的地址时,PDF 没有通过。

知道为什么吗?

最佳答案

您必须设置“mailto”Uri 才能将电子邮件发送到 Gmail 等电子邮件客户端。并且操作将是 ACTION_SENDTO 而不是 ACTION_SEND。

根据您的 Intent 编写如下代码:

// Email intent
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("mailto:"));

// To
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{mEmail});

// Subject
intent.putExtra(Intent.EXTRA_SUBJECT, getEmailSubject());

// Attachment
intent.putExtra(Intent.EXTRA_STREAM, uri);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

// Launch intent
context.startActivity(Intent.createChooser(intent, "Sending PDF..."));

关于Android 应用电子邮件附件未在 Gmail 应用中通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49000633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com