引入IM UIKit 之后,发送照片或者文件出现 Crash?

更新时间: 2024/03/05 17:44:05

如果发送照片或者文件的时候出现 crash,并触发报错java.lang.IllegalArgumentException: Failed to find configured root that contains /data/user/0/*** /cache/nim/file/ ***at androidx.core.content.FileProvider$SimplePathStrategy.getUriForFile(FileProvider.java:800),说明没有cache 目录的读取权限(根据报错中的*** /cache/nim/file/ ***判断),需要在FileProvidr 中配置 cache 目录。

配置步骤:

  1. 在工程的AndroidManifest.xml文件中的<Application>节点配置如下provider内容。

    java<provider
        android:name="com.netease.yunxin.kit.common.utils.CommonFileProvider"
        android:authorities="${applicationId}.IMKitFileProvider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
    </provider>
    
    
  2. 在工程的res目录下,添加xml目录,并创建file_paths.xml文件。在文件中添加如下内容。

    java<paths>
        <external-path
            name="root"
            path="." />
        <external-cache-path
            name="tempPictures"
            path="TempPictures" />
        <!-- cache 目录报错添加 -->
        <cache-path
            name="cachePath"
            path="."/>
    </paths>
    
  • 发送照片或者文件时出现 crash 也可能触发其他类似报错,以上仅以cache 目录的配置步骤为例进行说明。
  • 如果报错提示无其他目录的读取权限,添加相应的path即可,配置步骤类似。
此文档是否对你有帮助?
有帮助
去反馈