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

使用代码分享文件至Gmail时,Uri被填入收件人字段问题排查

Troubleshooting: File URI Ending Up in Gmail's Recipient Field

Hey there! Let's figure out why your shared file URI is showing up in Gmail's recipient box instead of just being attached. This is a common gotcha with Android share intents, so let's break down the most likely causes and fixes:

Common Causes & Fixes

1. You're Using the Wrong Intent Action

If you're using Intent.ACTION_SENDTO instead of Intent.ACTION_SEND (or Intent.ACTION_SEND_MULTIPLE for multiple files), that's almost certainly the issue.

ACTION_SENDTO is designed for sending messages to a specific target URI (like a mailto: address), so Gmail will interpret any URI you pass as the recipient address. Switch to ACTION_SEND instead—it's the correct action for sharing content like files.

2. You Set the File URI as Intent Data (instead of an Extra)

If your code calls shareIntent.setData(fileUri), Gmail will treat that URI as the recipient. Don't do this!

The correct approach is to pass the file URI via the Intent.EXTRA_STREAM extra, and use setType() to define your file's MIME type instead of setting data.

Double-check that you haven't mistakenly assigned the file URI to extras like Intent.EXTRA_EMAIL, Intent.EXTRA_TO, or Intent.EXTRA_CC. These fields should hold string arrays of email addresses, not file URIs.

Example of Correct Share Intent Code

Here's a working snippet to reference:

// Initialize the share intent with the correct action
Intent shareIntent = new Intent(Intent.ACTION_SEND);

// Set the MIME type of your file (replace with your actual file type)
shareIntent.setType("application/pdf");

// Attach the file URI using EXTRA_STREAM
shareIntent.putExtra(Intent.EXTRA_STREAM, yourFileUri);

// Optional: Pre-fill recipient, subject, or body if needed
shareIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"example@domain.com"});
shareIntent.putExtra(Intent.EXTRA_SUBJECT, "Shared File from My App");

// Grant read permission to the receiving app (critical for content URIs)
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

// Launch the chooser to let the user pick Gmail or another app
startActivity(Intent.createChooser(shareIntent, "Share File"));

Quick Checklist to Verify

  • Confirm you're using Intent.ACTION_SEND/ACTION_SEND_MULTIPLE
  • Remove any calls to setData() on the intent
  • Ensure the file URI is only passed via EXTRA_STREAM
  • Verify recipient extras are using email strings, not URIs
  • Added FLAG_GRANT_READ_URI_PERMISSION to let Gmail access the file

Make these adjustments, and your file should attach correctly without populating the recipient field with the URI.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:53:42