将多个文件传递给另一个应用程序

Pass several files to another app

我正在创建一个文件选择器,我正在通过 Intent 传递一个文件,如下所示:

Uri uri = FileProvider.getUriForFile(activity, FILE_PROVIDER_ID, file);
Intent sIntent = new Intent("ACTION_RETURN_FILE").setData(uri);
activity.setResult(RESULT_OK, sIntent);

有效。但现在我需要通过 Intent 传递几个文件。起初,我尝试调用 intent.setData 两次,但似乎没有用,因为

This method automatically clears any type that was previously set.

有没有办法将几个文件传递给另一个应用程序?

这可以通过 Intent#setClipData(ClipData) API 实现。

您可以在 Big Android BBQ 上的 Ian Lake's talk "Forget the Storage Permission: Alternatives for sharing and collaborating" 演讲中查看示例用法。

上述演讲的幻灯片。

用法示例:

// Adding into `Intent`
ClipData clipData = ClipData.newRawUri(null, contentUri);
clipData.addItem(new ClipData.Item(secondContentUri));
intent.setClipData(clipData);

// Retrieving from `Intent`
ClipData clipData = intent.getClipData();
for (int i = 0, count = clipData.getItemCount(); i < count; ++i) {
    ClipData.Item item = clipData.getItemAt(i);
    Uri uri = item.getUri();
}