将多个文件传递到另一个应用

时间:2017-05-24 05:35:04

标签: android android-intent android-fileprovider

我正在创建文件选择器,并且我通过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两次,但它似乎无法正常工作,因为

  

此方法会自动清除以前设置的任何类型。

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

1 个答案:

答案 0 :(得分:2)

使用Intent#setClipData(ClipData) API即可实现。

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

enter image description here 上述谈话的幻灯片。

示例用法:

// 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();
}