This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.
Expo DocumentPicker
一个用于访问系统 UI 的库,可从用户设备上的可用提供程序中选择文档。
expo-document-picker 提供了访问系统 UI 的功能,用于从用户设备上可用的提供程序中选择文档
安装
If you are installing this in an existing React Native app, make sure to install expo in your project.
在应用配置中进行配置
如果项目中使用配置插件(Continuous Native Generation(CNG)),则可以使用内置的配置插件配置 expo-document-picker。该插件允许你配置各种无法在运行时设置、且必须构建新的应用二进制文件才能生效的属性。如果应用不使用 CNG,则需要手动配置此库。
Example app.json with config plugin
如果想启用 iCloud 存储功能,请按照配置属性中的说明,在应用配置文件中将 expo.ios.usesIcloudStorage 键设置为 true
在本地运行 EAS Build 时,会使用 iOS capabilities signing 在构建前启用所需的 capabilities
Configurable properties
Are you using this library in an existing React Native app?
不使用 EAS Build 且需要 iCloud 存储功能的应用,必须为其 bundle identifier手动配置支持 CloudKit 的 iCloud service
如果通过 Apple Developer Console 启用了 iCloud capability,请务必在 ios/[app]/[app].entitlements 文件中添加以下 entitlements(其中 dev.expo.my-app 是你的 bundle identifier):
<key>com.apple.developer.icloud-container-identifiers</key> <array> <string>iCloud.dev.expo.my-app</string> </array> <key>com.apple.developer.icloud-services</key> <array> <string>CloudDocuments</string> </array> <key>com.apple.developer.ubiquity-container-identifiers</key> <array> <string>iCloud.dev.expo.my-app</string> </array> <key>com.apple.developer.ubiquity-kvstore-identifier</key> <string>$(TeamIdentifierPrefix)dev.expo.my-app</string>
Apple Developer Console 还要求创建一个 iCloud Container。注册新容器时,系统会要求你提供容器的描述和标识符。你可以在描述中输入任意名称。在标识符中添加 iCloud.<your_bundle_identifier>(与 com.apple.developer.icloud-container-identifiers 和 com.apple.developer.ubiquity-container-identifiers entitlements 中使用的值相同)
与 expo-file-system 一起使用
将 expo-document-picker 与 expo-file-system 一起使用时,文件系统不一定能在 expo-document-picker 选中文件后立即读取该文件
要允许 expo-file-system 在文件选中后立即读取该文件,需要确保 copyToCacheDirectory 选项设置为 true
API
import * as DocumentPicker from 'expo-document-picker';
Component
Type: React.Element<DocumentPickerOptions>
Display the system UI for choosing a document. By default, the chosen file is copied to the app's internal cache directory.
Notes for Web: The system UI can only be shown after user activation (e.g. a
Buttonpress). Therefore, callinggetDocumentAsyncincomponentDidMount, for example, will not work as intended. Thecancelevent will not be returned in the browser due to platform restrictions and inconsistencies across browsers.
Types
Literal type: union
Type representing successful and canceled document pick result.
Acceptable values are: DocumentPickerSuccessResult | DocumentPickerCanceledResult