gpt4 book ai didi

android - Gmail 5.0 应用程序在收到 ACTION_SEND Intent 时失败并显示 "Permission denied for the attachment"

转载 作者:IT王子 更新时间:2023-10-28 23:59:09 25 4
gpt4 key购买 nike

我的应用程序创建带有附件的邮件,并使用带有 Intent.ACTION_SEND 的 Intent 来启动邮件应用程序。

它适用于我测试过的所有邮件应用程序,除了新的 Gmail 5.0(它适用于 Gmail 4.9),其中邮件打开时没有附件,显示错误:“附件的权限被拒绝”。

logcat 上没有来自 Gmail 的有用邮件。我只在 Android KitKat 上测试了 Gmail 5.0,但在多个设备上测试。

我像这样为附件创建文件:

String fileName = "file-name_something_like_this";
FileOutputStream output = context.openFileOutput(
fileName, Context.MODE_WORLD_READABLE);

// Write data to output...

output.close();
File fileToSend = new File(context.getFilesDir(), fileName);

我知道 MODE_WORLD_READABLE 的安全问题。

我这样发送 Intent :

public static void compose(
Context context,
String address,
String subject,
String body,
File attachment) {

Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("message/rfc822");
emailIntent.putExtra(
Intent.EXTRA_EMAIL, new String[] { address });
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.putExtra(Intent.EXTRA_TEXT, body);

emailIntent.putExtra(
Intent.EXTRA_STREAM,
Uri.fromFile(attachment));

Intent chooser = Intent.createChooser(
emailIntent,
context.getString(R.string.send_mail_chooser));

context.startActivity(chooser);
}

在创建文件或发送 Intent 时我做错了什么吗?有没有更好的方法来启动带有附件的邮件应用程序?或者 - 有人遇到过这个问题并找到了解决方法吗?

谢谢!

最佳答案

我能够通过 Intent 将屏幕截图 .jpeg 文件从我的应用程序传递到 GMail 5.0。 key 在 this answer .

我从 @natasky 的代码中获得的所有内容几乎相同,但相反,我将文件目录设置为

context.getExternalCacheDir();

“代表你应该保存缓存文件的外部存储目录”(文档)

关于android - Gmail 5.0 应用程序在收到 ACTION_SEND Intent 时失败并显示 "Permission denied for the attachment",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26883259/

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