Android FileProvider 部分總結

FileProvider,就是 ContentProvider 的一個特殊子類,幫助我們將訪問受限的 file:// URI 轉化爲可以授權共享的 content:// URI。

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="my_images" path="images/"/>
    ...
</paths>

元素必須包含一到多個子元素。這些子元素用於指定共享文件的目錄路徑,必須是這些元素之一:

:內部存儲空間應用私有目錄下的 files/ 目錄,等同於 Context.getFilesDir() 所獲取的目錄路徑;

:內部存儲空間應用私有目錄下的 cache/ 目錄,等同於 Context.getCacheDir() 所獲取的目錄路徑;

:外部存儲空間根目錄,等同於 Environment.getExternalStorageDirectory() 所獲取的目錄路徑;

:外部存儲空間應用私有目錄下的 files/ 目錄,等同於 Context.getExternalFilesDir(null) 所獲取的目錄路徑;

:外部存儲空間應用私有目錄下的 cache/ 目錄,等同於 Context.getExternalCacheDir();

可以看出,這五種子元素基本涵蓋內外存儲空間所有目錄路徑,包含應用私有目錄。同時,每個子元素都擁有 name 和 path 兩個屬性。

其中,path 屬性用於指定當前子元素所代表目錄下需要共享的子目錄名稱。注意:path 屬性值不能使用具體的獨立文件名,只能是目錄名。

name 屬性用於給 path 屬性所指定的子目錄名稱取一個別名。後續生成 content:// URI 時,會使用這個別名代替真實目錄名。這樣做的目的,很顯然是爲了提高安全性。

如果我們需要分享的文件位於同級別目錄下不同的子目錄中,就需要添加多個子元素逐一指定要分享的文件目錄,或者共享他們通用的父目錄也行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章