You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程方式从内部存储将PDF文件附加到Gmail应用

Android 内部存储PDF文件附加到Gmail发送的实现方案

核心实现逻辑

通过系统ACTION_SEND意图唤起邮件应用(包含Gmail),将内部存储的PDF文件作为附件传入意图,同时授予邮件应用文件访问权限即可完成需求。

注意事项

  • 需提前确认目标PDF文件的内部存储路径正确,文件真实存在
  • Android 7.0(API 24)及以上版本禁止直接使用Uri.fromFile()分享文件,会触发FileUriExposedException,需使用FileProvider生成可授权的Content Uri
  • 必须添加读写权限授予标记,否则Gmail无法读取附件内容

实现代码

// 初始化发送意图
Intent intentShareFile = new Intent(Intent.ACTION_SEND);
// 配置收件人邮箱,mailTo替换为实际收件人地址
intentShareFile.putExtra(Intent.EXTRA_EMAIL, new String[] {mailTo});
// path替换为内部存储中PDF文件的实际路径
File fileWithinMyDir = new File(path);

if(fileWithinMyDir.exists()) {
    // 设置附件格式为PDF
    intentShareFile.setType("application/pdf");
    // API <24 可直接使用该方法生成Uri
    Uri pdfUri = Uri.fromFile(fileWithinMyDir);
    // API >=24 请替换为FileProvider生成Uri,示例如下:
    // Uri pdfUri = FileProvider.getUriForFile(context, "你的应用包名.fileprovider", fileWithinMyDir);
    intentShareFile.putExtra(Intent.EXTRA_STREAM, pdfUri);

    // 配置邮件主题
    intentShareFile.putExtra(Intent.EXTRA_SUBJECT, "邮件主题");
    // 配置邮件正文
    intentShareFile.putExtra(Intent.EXTRA_TEXT, "邮件正文内容");
    // 授予目标应用文件读写权限
    intentShareFile.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    intentShareFile.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

    // 拉起应用选择器,用户选择Gmail即可发送
    startActivity(Intent.createChooser(intentShareFile, "分享文件"));
}

内容的提问来源于stack exchange,提问作者Alam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:24:00