Android——FileProvider

时间:2024-10-22 20:08:22

概述

继承于ContentProvider,对第三方应用暴露文件,并授予文件读写操作的权限

        <!--兼容Android7.0,把访问文件的Uri方式改为FileProvider-->
        <!--android:grantUriPermissions 必须设置为true -->
        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="@string/file_provider"
            android:grantUriPermissions="true">
            <!--配置哪些路径是可以通过FileProvider访问的-->
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths"/>
        </provider>

res/xml/file_paths.xml

<paths>
    <external-path
        name="external_storage_download"
        path="Download" />
</paths>
        // 根据指定路径创建一个Uri对象
        Uri uri = Uri.parse(path);
        // 兼容Android7.0,把访问文件的Uri方式改为FileProvider
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            // 通过FileProvider获得文件的Uri访问方式
            FileProvider.getUriForFile(this, getString(R.string.file_provider), new File(path));
            Log.d("AAAA", String.format("new uri:%s", uri.toString()));
        }

案例代码