首页 文章

文件提供程序:无法找到包含的已配置根目录

提问于
浏览
1

我使用FileProvider使用以下代码与其他应用程序共享媒体:

Intent shareIntentt = new Intent(Intent.ACTION_SEND);
        shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        Uri contentUri = Fileprovider.getUriForFile(context, "com.app.tst", csOrignalFile);
        startActivity(Intent.createChooser(shareIntentt, getResources().getText(R.string.share)));

以下是清单中 <application> 标签下的提供商:

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

这是file_paths.xml:

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

文件位置是

data / user / 0 / com.app.tst / app_Media / User / 2b5b73e511c0f40d07303487b9b43a7c4fe92516 / df1c010261115ccba4b6ae484aff79714cb23fd5.jpg

我尝试了来自SO的多个答案并改变了路径= "/",其中有几个例子,例如FileProvider error "Failed to find configured root that contains /data/data/sawbodeployer.entm.illinois.edu ..."java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/0/Pictures但每次我都收到同样的错误 .

进程:com.app.tst,PID:8261 java.lang.IllegalArgumentException:无法在android.support中找到包含/data/data/com.app.tst/app_Media/User/2b5b73e511c0f40d07303487b9b43a7c4fe92516/df1c010261115ccba4b6ae484aff79714cb23fd5.jpg的已配置根目录 . v4.content.FileProvider $ SimplePathStrategy.getUriForFile(FileProvider.java:712)

Note: 我没有写任何自己的FileProvider .

3 回答

  • 0

    尝试

    <?xml version="1.0" encoding="utf-8"?>
    <paths >
        <external-path
            name="share" path="/"/>
    
    </paths>
    

    而不是 external-files-path

    Edit:- 你还没做 shareIntent.setData(contentUri); 请设置数据.. :)

  • 0

    set path =“”而不是path =“/”

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

    改成

    <files-path name="myfiles" path="."/>
    

    data/user/0/com.app.tst/app_Media/User/2b5.....
    

    改成

    /data/user/0/com.app.tst/files/app_Media/User/2b5b73e51.....
    

相关问题