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

自定义安卓文件管理器响应ACTION_GET_CONTENT请求如何返回多个文件?

响应ACTION_GET_CONTENT返回多文件的实现方法

首先判断收到的请求是否支持多选:
当接收到ACTION_GET_CONTENT请求时,先检查请求方是否开启了多选权限,代码如下:

// 读取请求方传入的多选开关参数
boolean isAllowMultiple = getIntent().getBooleanExtra(Intent.EXTRA_ALLOW_MULTIPLE, false);

如果isAllowMultiple为true,即可按多文件逻辑返回结果,实现代码如下:

// 你的业务逻辑生成的待返回多文件Uri列表
ArrayList<Uri> uriList = ...;
Intent resultIntent = new Intent();
// 塞入多文件Uri列表
resultIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uriList);
// 授予读取权限,如需写入权限可额外添加FLAG_GRANT_WRITE_URI_PERMISSION
resultIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
// 设置MIME类型:如果所有文件类型统一则填对应类型,否则直接复用请求方传入的类型即可
resultIntent.setType(getIntent().getType());

// 可选兼容逻辑:针对低版本系统额外设置ClipData,保证多文件识别正常
ClipData clipData = ClipData.newRawUri(null, uriList.get(0));
for (int i = 1; i < uriList.size(); i++) {
    clipData.addItem(new ClipData.Item(uriList.get(i)));
}
resultIntent.setClipData(clipData);

// 回传结果并结束页面
setResult(Activity.RESULT_OK, resultIntent);
finish();

注意事项

  • 多文件返回时不要调用setData()方法,否则部分应用会优先读取data字段对应的单个Uri,忽略多文件列表
  • 确保返回的所有Uri都是通过FileProvider生成的合规共享Uri,不要直接返回本地文件路径
  • 该实现对K9邮件完全兼容,无需额外适配即可被正常识别

内容的提问来源于stack exchange,提问作者Luis A. Florit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:36:04