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

使用FileProvider分享文件时第三方应用无法获取数据的问题排查

问题诊断与修复方案

你的核心问题出在Intent的参数传递方式错误,导致目标应用无法获取到共享的文件Uri,具体问题点和修复如下:

错误点分析

  1. 使用ACTION_SEND分享文件时,不应调用setData(fileUri),该方法主要用于指定Intent的操作数据(如网页链接),而非文件分享场景。
  2. 调用setType("text/plain")会覆盖之前setData设置的Uri,最终导致目标应用接收不到有效文件路径。

修正后的代码

将Intent相关代码替换为以下内容:

File filesDir = getApplicationContext().getFilesDir();
File shareDir = new File(filesDir, "shared/");
File file = new File(shareDir, "filename.txt");

Uri fileUri = FileProvider.getUriForFile(getApplicationContext(),
                                         "com.domain.name.fileprovider",
                                         file);

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// 先设置MIME类型
sendIntent.setType("text/plain");
// 通过EXTRA_STREAM传递文件Uri,这是ACTION_SEND分享文件的标准方式
sendIntent.putExtra(Intent.EXTRA_STREAM, fileUri);

startActivity(Intent.createChooser(sendIntent, getString(R.string.share_title)));

额外说明

  • 你的FileProvider配置(AndroidManifest.xml和file_paths.xml)是正确的,无需修改。
  • FLAG_GRANT_READ_URI_PERMISSION已经正确添加,使用Intent.createChooser()时,系统会自动将该权限授予用户选择的目标应用,无需额外手动处理权限授权。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 11:58:08