2017-05-24 36 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

相關問題