将多个文件传递给另一个应用程序
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();
}
我正在创建一个文件选择器,我正在通过 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();
}