2
我正在研究一個功能,其中我的應用程序將從服務器下載文件,然後允許用戶在外部第三方應用程序中打開這些文件(假設用戶安裝了可以查看文件的應用程序類型)。Android:共享下載的文件
文件被下載並存儲爲字節數組,其中包含一些伴隨的元數據,其中包括MIME類型和文件擴展名。
自定義ContentProvider
似乎是明顯的方式,因爲我的應用程序需要保留對下載文件的控制 - 即其他應用程序的訪問應該是隻讀的,並且我的應用程序應該控制是否/當文件被刪除。
說到實施我的自定義ContentProvider
,我不清楚幾件事情。我看只有教程似乎在兩個
- 之間,共享數據所關心的是它不夠的,只是重寫和實現
openFile()
和實施query()
,insert()
等爲「什麼也不做」存根的方法呢? - 假設執行
openFile()
是要走的路,我該如何處理從字節數組創建ParcelFileDescriptor
?
注意:如果可能的話,我需要一直支持API級別3(Cupcake)。
另一種可能是使用MemoryFile。我現在正在研究這個解決方案,希望性能比普通文件更快。 – Georgie 2013-03-10 23:23:54
關於我上面的評論,我嘗試了在內容提供者openFile()實現中使用MemoryFile,但沒有成功。原因之一是支持與MemoryFile相關的ParcelFileDescriptor在最近的Android版本中已經消失。甚至在此之前它需要反射技巧才能訪問。 – Georgie 2013-03-15 03:09:27
有什麼方法可以將字節數組傳遞給'ParcelFileDescriptor'嗎?出於安全原因,我無法在手機上保存PDF文件。 – 2015-06-15 20:29:45