You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

联想K3 Note相机文件分享失败:找不到配置根目录异常

解决联想K3 Note上无法分享相机文件夹文件的问题

兄弟,你这个问题我之前也碰到过,核心就是FileProvider的路径配置没覆盖到相机照片所在的目录。从报错的路径/storage/9016-4EF8/DCIM/Camera/IMG_20180317_111252.jpg能看出来,照片存在外部存储(大概率是SD卡)的DCIM/Camera目录里,但你现在的file_paths.xml不仅没配置这个路径,甚至代码都没写完(<external-path nam这里断了),难怪FileProvider找不到对应的根目录映射。

第一步:修复你的file_paths.xml配置

直接把配置改成下面这样,覆盖相机相关的外部存储路径:

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <!-- 应用内部存储的Camera目录 -->
    <files-path name="Camera" path="/Camera/" />
    <!-- 应用内部存储根目录 -->
    <files-path name="Files" path="." />
    <!-- 外部存储的Download目录 -->
    <external-path name="Downloads" path="/Download/" />
    <!-- 适配外部存储的DCIM/Camera公共目录 -->
    <external-path name="External_Camera" path="/DCIM/Camera/" />
    <!-- 兼容SD卡这类可移除存储的相机目录 -->
    <external-files-path name="SD_Camera" path="/DCIM/Camera/" />
</paths>

这里加了两个关键配置:

  • <external-path>对应设备的公共外部存储(比如/storage/emulated/0/DCIM/Camera/)
  • <external-files-path>对应应用在可移除存储上的私有目录,刚好适配联想K3 Note的SD卡路径

第二步:正确生成分享用的Uri

分享时一定要用FileProvider生成合法的Uri,不能直接用文件路径,示例代码如下:

// 替换成你的相机文件路径,或者用API动态获取更稳妥
File cameraPhoto = new File("/storage/9016-4EF8/DCIM/Camera/IMG_20180317_111252.jpg");
// 注意替换成你在Manifest里注册的FileProvider authorities
Uri shareUri = FileProvider.getUriForFile(this, "com.your.package.fileprovider", cameraPhoto);

// 构建分享Intent
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/jpeg");
shareIntent.putExtra(Intent.EXTRA_STREAM, shareUri);
// 必须加上这句,授予接收方临时读取权限
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

// 启动分享选择器
startActivity(Intent.createChooser(shareIntent, "分享照片"));

额外提醒

  1. 确保你已经在AndroidManifest.xml里正确注册了FileProvider,示例注册代码:
<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="com.your.package.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>
  1. 如果你是Android 6.0及以上系统,别忘了申请READ_EXTERNAL_STORAGE权限,动态申请或者在Manifest里声明都可以。
  2. 动态获取相机路径更稳妥,比如用Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) + "/Camera/",避免硬编码路径适配问题。

内容的提问来源于stack exchange,提问作者Gunaseelan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:21:58