FileProvider错误“无法找到包含/data/data/sawbodeployer.entm.illinois.edu ...的已配置根目录”

时间:2017-05-29 17:30:11

标签: android provider download-manager android-fileprovider

我通过android下载管理器下载视频,想要分享这个视频,我按照Manifas

进行操作
 <provider
        android:name="android.support.v4.content.FileProvider"
        android:authorities="my.domain"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/paths" />
    </provider>

并在文件path.xml中添加:

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="video_folder" path="files/"/>
</paths>

并使用此提供商:

File file = new File(getActivity().getFilesDir() , videoPath);
                Uri uri = FileProvider.getUriForFile(getContext(), "my.domain", file);
                Intent intent = ShareCompat.IntentBuilder.from(getActivity())
                        .setType("video/3gp")
                        .setStream(uri)
                        .setChooserTitle("Choose bar")
                        .createChooserIntent()
                        .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                startActivity(intent);

但我收到错误:

  

java.lang.IllegalArgumentException:无法找到包含/data/data/sawbodeployer.entm.illinois.edu/files/AKA1_Fante_Ghana_HandWashing_Final.3gp

的已配置根目录

它的问题在哪里?

1 个答案:

答案 0 :(得分:0)

替换:

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="video_folder" path="files/"/>
    <files-path name="name" path="path" />
</paths>

使用:

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <files-path name="video_folder" />
</paths>
当您希望从中提供根目录下的某个特定子目录时,将使用

path。您的文件直接位于getFilesDir(),因此您无法使用path