2017-05-24 24 views
1

我创建一个文件选择,我传递一个文件通过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

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

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

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

正如我理解另一个应用程序应该支持clipData? 我需要为标准应用程序(如电子邮件客户端)创建文件提供程序。 – Rainmaker

+0

我刚试过你的解决方案,它的工作原理!谢谢! – Rainmaker

相关问题