我正在尝试创建一个文件选择器来连接云存储服务。我将文件附加到其他应用程序时没有问题,甚至 Gmail 也成功地取回了我的活动结果,并根据我设置的 URI/clipdata 显示了正确的缩略图。
问题在于,当您实际发送电子邮件时,Gmail 会通知用户“无法发送附件”并发送不带附件的电子邮件。
我不知道我做错了什么。我尝试将 URI 设置为 Intent.setData() 以及使用 URI 并设置 Intent.setClipData()。此外,我尝试明确包含 FLAG_GRANT_READ_URI_PERMISSION 的标志。这些东西都不能解决问题。
任何知道可能出了什么问题的人,请插话。其他云提供商在通过此流程附加他们的内容时似乎没有问题,所以我只是不知道我做错了什么。
我的代码现在大致如下所示,但仍然不适用于 Gmail:
Intent result = new Intent();
result.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
result.setData(uri);
if (getActivity().getIntent().getBooleanExtra(Intent.EXTRA_ALLOW_MULTIPLE, false)) {
String mime = Utils.getMimeType(document);
result.setClipData(new ClipData(document.getSimpleName(), new String[]{mime}, new ClipData.Item(uri)));
result.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
result.putExtra(Intent.EXTRA_STREAM, uri);
}
getActivity().setResult(Activity.RESULT_OK, result);
getActivity().finish();