FileProvider的使用

文章內(nèi)容來自于:
Android 7.0 行為變更 通過FileProvider在應(yīng)用間共享文件吧
解決 Android N 7.0 上 報錯:android.os.FileUriExposedException

在官方7.0的以上的系統(tǒng)中络它,嘗試傳遞 file://URI可能會觸發(fā)FileUriExposedException宋列。

目錄

  1. 第一步 聲明FIleProvider
  2. 第二步 編寫XML文件
  3. 第三步 使用FileProvider

第一步 聲明FIleProvider

為什么要聲明呢倒源?
因為FileProvider是ContentProvider子類
注意需要設(shè)置一個meta-data蛛淋,里面指向一個xml文件嗡善。

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="app的包名.fileProvider"
    android:grantUriPermissions="true"
    android:exported="false">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>

第二步 編寫XML文件

為什么要寫這么個xml文件?
因為要使用content://uri替代file://uri术吝,那么计济,content://的uri如何定義呢?總不能使用文件路徑顿苇。
所以,需要一個虛擬的路徑對文件路徑進行映射税弃,所以需要編寫個xml文件纪岁,通過path以及xml節(jié)點確定可訪問的目錄,通過name屬性來映射真實的文件路徑则果。

xml文件的創(chuàng)建

//每個節(jié)點都支持兩個屬性:name+path
//path:需要臨時授權(quán)訪問的路徑(.代表所有路徑) 
//name:就是你給這個訪問路徑起個名字
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <root-path name="root" path="" /> //代表設(shè)備的根目錄new File("/");
    <files-path name="files" path="" /> //context.getFilesDir()
    <cache-path name="cache" path="" /> //context.getCacheDir()
    <external-path name="external" path="" /> //Environment.getExternalStorageDirectory()
    <external-files-path name="name" path="path" /> //context.getExternalFilesDirs()
     <external-cache-path name="name" path="path" /> //getExternalCacheDirs()
</paths>

比如

<?xml version="1.0" encoding="utf-8"?>
<paths>
 //代表的目錄即為:Environment.getExternalStorageDirectory()/Android/data/包名/
    <external-path
        name="files_root"
        path="Android/data/包名/" />

 //代表的目錄即為:Environment.getExternalStorageDirectory()
    <external-path
        name="external_storage_root"
        path="." />

 //代表的目錄即為:Environment.getExternalStorageDirectory()/pics
    <external-path
        name="external"
        path="pics" />

</paths>

當(dāng)這么聲明以后幔翰,代碼可以使用你所聲明的當(dāng)前文件夾以及其子文件夾。

第三步 使用FileProvider

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
    Uri uri = FileProvider.getUriForFile(CameraActivity.this, "app的包名.fileProvider", photoFile);
} else {
    Uri uri = Uri.fromFile(photoFile);
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末西壮,一起剝皮案震驚了整個濱河市遗增,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌款青,老刑警劉巖做修,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異抡草,居然都是意外死亡饰及,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進店門康震,熙熙樓的掌柜王于貴愁眉苦臉地迎上來燎含,“玉大人,你說我怎么就攤上這事腿短∑凉浚” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵橘忱,是天一觀的道長赴魁。 經(jīng)常有香客問我,道長钝诚,這世上最難降的妖魔是什么尚粘? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮敲长,結(jié)果婚禮上郎嫁,老公的妹妹穿的比我還像新娘秉继。我一直安慰自己,他們只是感情好泽铛,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布尚辑。 她就那樣靜靜地躺著,像睡著了一般盔腔。 火紅的嫁衣襯著肌膚如雪杠茬。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天弛随,我揣著相機與錄音瓢喉,去河邊找鬼。 笑死舀透,一個胖子當(dāng)著我的面吹牛栓票,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播愕够,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼走贪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了惑芭?” 一聲冷哼從身側(cè)響起坠狡,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎遂跟,沒想到半個月后逃沿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡幻锁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年感挥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片越败。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡触幼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出究飞,到底是詐尸還是另有隱情置谦,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布亿傅,位于F島的核電站媒峡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏葵擎。R本人自食惡果不足惜谅阿,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧签餐,春花似錦寓涨、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至冠摄,卻和暖如春糯崎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背河泳。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工沃呢, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人拆挥。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓薄霜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親竿刁。 傳聞我的和親對象是個殘疾皇子黄锤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容