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

在安卓30中使用`FileProvider.getUriForFile`进行公共文件夹抛出`找不到已配置的根`

的问题是由于在Android 10及以上版本中,对文件访问权限进行了更严格的限制,需要通过FileProvider来提供文件的访问权限。

解决这个问题的步骤如下:

  1. 首先,在AndroidManifest.xml文件中添加FileProvider的配置。在<application>标签内添加以下代码:
代码语言:txt
复制
<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="${applicationId}.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>
  1. 在res目录下创建一个xml文件夹,并在xml文件夹下创建一个名为file_paths.xml的文件。文件内容如下:
代码语言:txt
复制
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="." />
</paths>
  1. 确保你的代码中使用了正确的authority。在调用FileProvider.getUriForFile方法时,第一个参数应该是context,第二个参数应该是authority,即上述配置中的${applicationId}.fileprovider
  2. 最后,检查你的应用是否具有读取外部存储的权限。在AndroidManifest.xml文件中添加以下权限:
代码语言:txt
复制
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

以上步骤可以解决使用FileProvider.getUriForFile时出现找不到已配置的根的问题。这样可以确保你的应用在Android 10及以上版本中能够正确地访问公共文件夹。

推荐的腾讯云相关产品:腾讯云对象存储(COS)。

腾讯云对象存储(COS)是一种安全、高可靠、低成本、高扩展性的云端存储服务,适用于存储和处理任意类型的文件、图片、音视频等海量数据。它提供了简单易用的API接口,可以方便地在应用程序中进行文件的上传、下载、管理等操作。腾讯云对象存储还具备数据冗余备份、数据加密、访问权限控制等功能,确保数据的安全性和可靠性。

产品介绍链接地址:腾讯云对象存储(COS)

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

相关·内容

领券