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

使用Expo Document Picker选取目录时遇Native方法调用异常问题

问题解决:Expo DocumentPicker 选择目录时出现"No Activity found to handle Intent"错误

错误原因

你用DocumentPicker.getDocumentAsync并指定type: "directory"是错误的——这个API仅用于选择文件,不支持目录选择,所以系统找不到能处理打开目录Intent的Activity,抛出了该错误。

解决方案

既然你已经通过FileSystem.StorageAccessFramework.requestDirectoryPermissionsAsync()请求了SAF(存储访问框架)权限,直接用SAF的API来选择目录即可,无需再调用DocumentPicker。

修改后的代码如下:

import * as FileSystem from 'expo-file-system';

const pickDirectory = async () => {
    console.log("hi!!!!!");
    try {
        const permission = await FileSystem.StorageAccessFramework.requestDirectoryPermissionsAsync();
        if (permission.granted) {
            // 使用SAF的API获取目录,而非DocumentPicker
            const dirUri = await FileSystem.StorageAccessFramework.getDirectoryAsync();
            console.log("选中的目录URI:", dirUri);
            // 后续可通过SAF API操作目录,比如读取文件列表
            // const files = await FileSystem.StorageAccessFramework.readDirectoryAsync(dirUri);
            // console.log("目录内文件:", files);
        }
    } catch (error) {
        console.log(error);
    }
};

补充说明

  • Expo的FileSystem.StorageAccessFramework模块专门用于SAF相关的目录操作,包括权限请求、目录选择、文件读写等,完全满足你选择目录的需求。
  • 确保你的Expo SDK版本在48及以上(SAF相关API在该版本后稳定支持)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 23:55:22