2017-07-17 70 views
1

FileProvider documentation列出了這些地點的地方它可以從文件服務解決方案:應用程序的內部存儲區域的如何使FileProvider服務可繪製?

  • 文件/子目錄

  • 一個應用程序的內部存儲區域的緩存子目錄

  • 外部存儲區域的根目錄

  • 應用程序的外部存儲區域的根目錄

  • 應用程序的外部緩存區的根

有FileProvider後代,如Commonsware's CWAC Provider,這也讓文件從服務:

  • 應用程序的原始資源文件夾

  • 應用的資產文件夾

  • ()

  • ()的返回Environment.getExternalStoragePublicDirectory文件夾

但(如果它不具有一些致命的缺點)如何將一個寫FileProvider該贈款GETDIR返回的文件夾訪問應用的現有的可繪製文件(沒有先製作其他文件夾中的可繪製副本)?

回答

1

沒有缺點,但是這可能是沒有意義的(見下文解釋)。


要實現CWAC提供這樣的訪問叉源代碼,並取代它的使用raw資源文件夾與文件夾drawables。通常使用的可繪製格式(png和jpg)由aapt進行非壓縮存儲,因此在這方面原始資源和drawable之間沒有區別。請注意,由於drawable通常是爲多個配置桶準備的,因此您需要調用者指定它們需要的維度/分辨率(例如通過Uri中的其他自定義查詢參數)。

這就是說,這取決於你的目標,使用的ContentProvider訪問應用程序的資源可能是不必要的。如果您的應用程序不受DRM保護,則它是apk,資源將在設備上未加密存儲。 任何安裝的應用程序可以很容易地訪問這些資源,而無需通過ContentProvider的打算:這樣做只是調用createPackageContext並使用返回的上下文的Resources對象,如果這些是你自己的普通的本地資源。