2016-06-01 37 views
1

我想允許用戶與Intent.ACTION_SEND共享文件讓我們說,然後存儲用戶的選擇和地址/電話號碼,以便能夠自動發送一個不同的文件在不同的時間到達同一個目的地。這是可能的和如何? 謝謝是否可以與Intent.ACTION_SEND共享文件檢索並存儲用戶選擇

+0

這是絕對有可能的。 – 2016-06-01 03:23:30

+0

,你至少能帶領我走向正確的方向。一個多小時的研究並沒有引導我做任何事情。 – MotKohn

回答

2

您可以將您的文件作爲二進制數據共享,如下所述。

從Android開發頁

引用鏈接: https://developer.android.com/training/sharing/send.html

發送二進制內容

二進制數據使用ACTION_SEND行動 設置適當的MIME類型和放置URI中的數據合併的共享 另外一個名爲EXTRA_STREAM。這通常用於共享圖像 但可以用來共享任何類型的二進制內容:

Intent shareIntent = new Intent(); 
shareIntent.setAction(Intent.ACTION_SEND); 
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage); 
shareIntent.setType("image/jpeg"); 
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to))); 

注意以下幾點:

您可以使用MIME類型的「/「,但這隻會匹配能夠處理通用數據流的活動 。接收的 應用程序需要訪問Uri指向的數據的權限。 推薦的方法是:將數據存儲在您自己的 ContentProvider中,確保其他應用程序具有訪問您的提供商的正確 權限。提供訪問的 的首選機制是使用臨時的每個URI權限,並且 僅授予對接收應用程序的訪問權限。一個簡單的方法可以像這樣創建一個ContentProvider 就是使用FileProvider helper類。 使用系統MediaStore。 MediaStore主要針對視頻, 音頻和圖像MIME類型,但是從Android 3.0(API 級別11)開始,它也可以存儲非媒體類型(請參閱MediaStore.Files 更多信息)。可以使用scanFile() 將文件插入到MediaStore中,之後將適合共享的content:// style Uri傳遞給提供的onScanCompleted()回調的 。請注意,一旦加入到 系統MediaStore內容是設備

只要改變上述代碼的最後一行,所以它不會顯示選擇器每次上可以訪問任何應用程序。它將在隨後的應用程序運行中存儲默認選項。

startActivity(shareIntent); 

關於「然後存儲用戶的選擇和地址/以電話號碼,以便能夠自動發送不同的文件到相同的目的地

用戶選擇發送文件到一個特定的應用將通過使用上面的代碼進行存儲。但我不這麼認爲,您可以在應用程序中存儲來自其他應用程序的特定號碼/地址,以便隨後發送文件。一旦你的意圖去到另一個活動(應用程序),它不能從你以前的活動(應用程序)進行控制。每次您都必須在第二個應用程序中選擇特定的地址/數字。

+0

謝謝,我不是故意限制自己發送Intent機制。有沒有其他方法? – MotKohn

+0

我想不出任何其他機制。意圖是標準的路要走。讓我們看看是否有其他人提出了一些建議如果您發現其他選擇,請在此分享。 – kingAm

相關問題