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

Xamarin Community Toolkit CameraView 安卓端访问DCIM文件夹问题

Xamarin Community Toolkit CameraView Android 平台DCIM目录访问解决方案

方案1:优先推荐自定义录制路径

XCT 1.2.0版本的CameraView支持显式指定视频输出路径,直接规避默认路径访问异常问题:

  1. 录制前先创建可访问的私有存储目录,代码如下:
// 统一使用Xamarin Essentials获取的沙盒目录,跨平台适配性更好
string videoDir = Path.Combine(FileSystem.AppDataDirectory, "RecordedVideos");
if (!Directory.Exists(videoDir))
{
    Directory.CreateDirectory(videoDir);
}
string outputPath = Path.Combine(videoDir, $"{DateTime.Now:yyyyMMdd_HHmmss}.mp4");
// 赋值给CameraView的录制路径属性
cameraView.VideoCapturePath = outputPath;
// 开始录制
await cameraView.StartCapturingVideoAsync();
  1. 录制结束后直接从outputPath读取文件即可,无需额外权限适配。

方案2:访问默认DCIM目录

如果必须使用组件默认的保存路径,按如下步骤操作:

2.1 配置权限

在Android项目的AndroidManifest.xml中添加对应权限:

  • 目标版本≤API 29(安卓10):添加READ_EXTERNAL_STORAGE、WRITE_EXTERNAL_STORAGE权限,代码运行时动态申请存储权限
  • 目标版本≥API 30(安卓11):如果默认路径为公共DCIM目录,需添加MANAGE_EXTERNAL_STORAGE权限并动态申请;如果为应用私有目录无需额外权限

2.2 枚举私有目录下的所有文件夹

默认Directory.GetDirectories重载可能过滤系统创建的目录,使用全参数重载枚举:

string[] allDirs = Directory.GetDirectories(
    FileSystem.AppDataDirectory, 
    "*", 
    SearchOption.TopDirectoryOnly);

如果枚举结果仍无DCIM目录,说明默认路径为公共存储目录,需通过MediaStore查询:

// 可通过DependencyService封装调用安卓原生逻辑
var contentResolver = Android.App.Application.Context.ContentResolver;
var queryUri = MediaStore.Video.Media.ExternalContentUri;
string[] projection = { 
    MediaStore.Video.Media.InterfaceConsts.Data, 
    MediaStore.Video.Media.InterfaceConsts.DisplayName,
    MediaStore.Video.Media.InterfaceConsts.DateAdded
};
var cursor = contentResolver.Query(queryUri, projection, null, null, $"{MediaStore.Video.Media.InterfaceConsts.DateAdded} DESC");
if (cursor.MoveToFirst())
{
    do
    {
        string filePath = cursor.GetString(cursor.GetColumnIndexOrThrow(MediaStore.Video.Media.InterfaceConsts.Data));
        // 筛选路径包含DCIM的目标文件
        if (filePath.Contains("DCIM"))
        {
            // 拿到目标文件路径做后续处理
        }
    } while (cursor.MoveToNext());
}
cursor.Close();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:18:04