FileProvider使用(安卓7.0以上使用)

1.在manifest配置provider

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="xxx.xxx.FileProvider"http://可以隨便配置,但必須與后面調(diào)用一致即可
            android:exported="false"http://只限本項(xiàng)目使用權(quán)限
            android:grantUriPermissions="true">//允許權(quán)限
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_provider" /> //xml文件在res下配置
        </provider>

2.在res目錄下新建xml文件夾,并建立file_provider.xml文件


```<?xml version="1.0" encoding="utf-8"?>

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external" path="" />//代表的根目錄: Environment.getExternalStorageDirectory()

   <!-- <files-path name="files" path="tongzhi/" />//代表的根目錄: Context.getFilesDir()
    <root-path name="root" path="gentledownload/" />//代表設(shè)備的根目錄new File("/");
   <files-path name="files" path="tongzhi/" />//代表的根目錄: Context.getFilesDir()
  <cache-path name="cache" path="" />//代表的根目錄: getCacheDir()

   <external-files-path name="external_files" path="" />//>代表的根目錄: Context.getExternalFilesDir(String)
   <external-cache-path name="external_cache" path="" />//代表的根目錄: Context.getExternalCacheDir()-->

</paths>

3.在需要用到uri時(shí)候調(diào)用

Uri uri = null;
        if (Build.VERSION.SDK_INT >= 24) {
intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//請(qǐng)求權(quán)限
            uri = FileProvider.getUriForFile(context, "xxx.xxx.FileProvider", file);
        }else {
            uri = Uri.fromFile(file);
        }

4.有的時(shí)候引入第三方的東西可能manifest配置和三方manifest配置有沖突,這時(shí)候可以自定義fileprovider

public class MyFileProvider extends FileProvider {//只需要繼承即可

}

5.manifest配置

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="xxx.xxx.MyFileProvider"http://可以隨便配置,但必須與后面調(diào)用一致即可
            android:exported="false"http://只限本項(xiàng)目使用權(quán)限
            android:grantUriPermissions="true">//允許權(quán)限
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_provider" /> //xml文件在res下配置
        </provider>
           有什么不足的地方歡迎大家提出來,共同進(jìn)步!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 3,232評(píng)論 0 3
  • 文章內(nèi)容轉(zhuǎn)載自Android 7.0 行為變更 通過FileProvider在應(yīng)用間共享文件吧 - CSDN博客 ...
    暴躁的西瓜閱讀 2,437評(píng)論 0 3
  • 只簡(jiǎn)述我發(fā)現(xiàn)問題的根源,有些是適配了7.0,會(huì)報(bào)權(quán)限失敗問題,那是由于沒有動(dòng)態(tài)授權(quán)導(dǎo)致,接下來我一步一步給大家實(shí)現(xiàn)...
    Wocus閱讀 2,460評(píng)論 4 5
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,724評(píng)論 19 139
  • 電話里,媽媽請(qǐng)動(dòng)兒下樓幫媽媽拎東西。等了二十多分鐘,媽媽又打了一遍電話,沒人接,沒多久,聽到有跺腳的聲音,嗨,動(dòng)動(dòng)...
    小可以之動(dòng)閱讀 725評(píng)論 13 51

友情鏈接更多精彩內(nèi)容