首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Java、FileProviders、getUriFromFile失败,错误:找不到包含/storage/1018-2710/Pictures/Sarx7IIJi-o.jpg的已配置根目录

Android Java中,FileProviders用于在应用程序之间共享文件。它提供了一种安全的方式来访问应用的私有文件,并使其他应用能够通过内容提供器来获取这些文件。getUriFromFile是FileProvider类中的一个方法,用于获取指定文件的content:// URI。

在使用getUriFromFile方法时,如果出现错误"找不到包含/storage/1018-2710/Pictures/Sarx7IIJi-o.jpg的已配置根目录",这意味着FileProvider配置中没有正确指定文件的根目录。

要解决这个问题,首先需要检查AndroidManifest.xml文件中的FileProvider配置。确保在<application>标签内部有一个<provider>标签,并在其中指定了正确的authorities(授权名称),用于与其他应用程序共享文件。例如:

代码语言:txt
复制
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp">

    <application>
        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.example.myapp.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths"></meta-data>
        </provider>
        ...
    </application>

</manifest>

其中,authorities的值可以自定义,但必须与getUriFromFile中调用时的参数一致。

然后,需要创建一个名为file_paths.xml的XML文件,并将其放在res/xml目录下。该文件用于指定文件的根目录和访问权限。例如:

代码语言:txt
复制
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="my_images" path="Pictures/" />
</paths>

在上述示例中,使用了external-path指定了Pictures目录为根目录,并命名为"my_images"。可以根据具体需求进行调整。

最后,在使用getUriFromFile方法时,需要确保提供正确的File参数和authority参数,示例代码如下:

代码语言:txt
复制
File file = new File("/storage/1018-2710/Pictures/Sarx7IIJi-o.jpg");
Uri fileUri = FileProvider.getUriForFile(context, "com.example.myapp.fileprovider", file);

请注意,上述代码中的"com.example.myapp.fileprovider"应该与AndroidManifest.xml中<provider>标签中的authorities属性的值一致。

推荐腾讯云相关产品:由于要求不能提及具体云计算品牌商,建议参考腾讯云的文档和产品,以获取更详细的信息和适用场景。

希望上述答案能够对您有所帮助。如果您还有任何疑问,请随时追问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券