Gmail 5.0 应用在收到 ACTION_SEND 意图时失败,并显示“附件权限被拒绝”

2023-12-08

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

它适用于我测试过的所有邮件应用程序,但新的 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.

我这样发送意图:

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);
}

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

Thanks!


我能够通过 Intent 将屏幕截图 .jpeg 文件从我的应用程序传递到 GMail 5.0。关键是在这个答案.

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

context.getExternalCacheDir();

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Gmail 5.0 应用在收到 ACTION_SEND 意图时失败,并显示“附件权限被拒绝” 的相关文章

随机推荐

  • Android:http登录没有达到预期的效果

    我似乎无法让登录页面正常工作 它一直告诉我我的用户名 密码不正确 而我显然知道它们不正确 所以我开始调试并弹出 log v 我发现了一些有趣的东西 查找显示 class LogMeIn extends AsyncTask
  • MySQL统计最近7天的数据

    我有以下架构 表票 Field Type Null Key Default Extra id int 10 NO PRI NULL auto increme
  • 如何使用 cbt 从 BigTable 中删除带有前缀键的行范围

    看起来我可以用 cbt 读取带有前缀键的行 cbt project someproject instance someinstance read sometable prefix abc 但是如何使用 cbt 命令删除上述命令选择的那些行呢
  • JSONObject 包含转义字符

    我正在构建一个模拟器来将 JSON 数据发布到我正在运行的服务 JSON 应如下所示 sensor id SENSOR1 name SENSOR type Temperature value 100 12 lastDateValue Dat
  • Bash 测试运算符 [[ ... -eq ... ]] 中的错误或功能?

    有人可以解释一下以下之间的区别 VAR 1xyz VAR eq VAR 2 gt dev null echo Yes VAR VAR is an integer echo No VAR VAR is NOT an integer No VA
  • Jwt 策略后 ExecutionContext 中用户丢失

    目前我已经实现了 jwt 防护 它工作得很好 使用 Passport jwt 正在验证颁发的令牌 我可以通过 Request 通过 req user 查看用户 在实现基于角色的身份验证作为已经工作的附加组件后出现问题JWT 的守卫 我遵循了
  • 将 ERRORLEVEL 重置为零的最简单方法是什么?

    我有一个为 C 项目运行一些命令的构建后事件 最后一个命令有时会导致 ERRORLEVEL 值不等于 0 然后构建失败 我想附加一行额外的命令以始终将 ERRORLEVEL 值设置为零 最方便的方法是什么 如果你使用exit b 0你可以返
  • 在多个子图行中绘制条形图

    我有一个简单的长格式数据集 我想从中生成条形图 数据框如下所示 data Year 2019 2019 2019 2020 2020 2020 2021 2021 2021 Month diff 0 1 2 0 1 2 0 1 2 data
  • 在开发阶段在 Android 上测试 google 登录

    Google 登录始终返回未登录状态 使用 Android studio 在设备上推送应用程序时总是失败 但是 当我安装签名的应用程序时 它可以工作 当我们仍在开发应用程序时 如何使谷歌登录正常工作 在开发时 您可能正在使用调试密钥存储 获
  • h2o.glm lambda 搜索似乎没有迭代所有 lambda

    请考虑以下基本的可重现示例 library h2o h2o init data iris iris hex as h2o iris iris hex mod h2o glm y Sepal Length x setdiff colnames
  • ASP.NET单元测试Windows7/IIS7

    今天花了几个小时尝试针对 ASP NET 项目编写一些单元测试 这是 Visual Studio 2010 将 Windows 7 企业版与 IIS7 结合使用 我采取的步骤是 向解决方案添加了新的测试项目 打开一个类文件作为网站的一部分
  • 如何高效、快速地用 JButton 完全填充 JFrame?

    因此 我正在努力用 Java 重新创建扫雷游戏 现在我需要将 JFrame 上的所有按钮放置在网格中 我的代码如下 import javax swing import java util ArrayList import java awt
  • 如何编辑Streamlit AgGrid行的单元格?

    我已经创建了AgGrid通过从 csv 文件加载数据 我通过外部按钮逐行添加行 但是当我尝试编辑我添加的行时 它消失了 如果您能帮助我找出错误所在 我将不胜感激 代码如下 import pandas as pd import streaml
  • React 事件处理函数无需使用 bind() 即可工作

    我正在学习 React 并且遇到了事件处理程序 在React中 建议将函数绑定到this 然后将其用作事件处理程序 但是 我没有绑定它 但仍然得到所需的输出 下面是我的代码 import React Component from react
  • 使用 Java 卡钱包

    我是一个java卡初学者 从示例中复制了下面的代码 不知何故 我已经知道部分代码是如何工作的 但还是对下面的事情感到困惑 ownerpin 的工作方式以及设置 pin 的方式和时间 如何进行信用和借记工作 我了解平衡是如何运作的 这方面还不
  • 如何在一个应用程序中获取多个图标来启动不同的活动?

    我有一个包含两个活动的应用程序 我希望能够在启动器中显示两个图标 每个图标在应用程序中启动相应的活动 具体来说 我想要一个图标来启动我的主应用程序 另一个图标来启动我的设置活动 这可能吗 这是我到目前为止所尝试过的
  • 复制到输出目录复制文件夹结构但只想复制文件

    我有一个 VS2008 我想将某些文件从目录复制到我的 bin 文件夹 我已经设置了文件 位于 common browserhawk 到 复制到输出目录 但是 它也会复制文件夹结构 文件被复制到 bin common browserhawk
  • 如何对重复标签进行分组,以便在 Chart.js 中创建没有重复的标签

    我似乎无法解决这个问题 我的唱片公司给我发回列表 在我的例子中 我希望只有 HOME40 HOME60 和 PRO 作为标签 但不幸的是它返回了它们的串联 我还想改变颜色 如果产品是HOME40那么颜色必须是绿色 如果是PRO那么颜色必须是
  • java中字节数组到短数组然后再返回

    我在获取存储在字节数组中的音频数据 将其转换为大端短数组 对其进行编码 然后将其更改回字节数组时遇到一些问题 这是我所拥有的 原始音频数据存储在audioBytes2中 我使用相同的格式进行解码 并在 cos 函数上加上减号 不幸的是 更改
  • Gmail 5.0 应用在收到 ACTION_SEND 意图时失败,并显示“附件权限被拒绝”

    我的应用程序创建带有附件的邮件 并使用意图Intent ACTION SEND启动邮件应用程序 它适用于我测试过的所有邮件应用程序 但新的 Gmail 5 0 它适用于 Gmail 4 9 除外 邮件在没有附件的情况下打开 显示错误 附件的