Android端expo-image-picker显示PDF且选中后崩溃问题求助
解决expo-image-picker在Android端显示PDF并崩溃的问题
问题根源
Android系统文件选择器对ImagePicker.MediaTypeOptions.All的解析会包含PDF这类文档格式,而expo-image-picker未对PDF做兼容处理,导致选中后应用崩溃。
解决方案
直接指定允许的媒体类型,不用模糊的All,明确限定为图片和视频:
修改后的代码
import * as ImagePicker from 'expo-image-picker' export default function App() { const openGallery=async()=>{ console.log("openGallery") try { const result=await ImagePicker.launchImageLibraryAsync({ // 替换All为具体的媒体类型数组,精准过滤非图片/视频文件 mediaTypes: ['image/*', 'video/*'], exif:false, quality: 1, base64:false }) console.log(result); } catch (error) { console.log(error); } } return ( <View style={styles.container}> <TouchableOpacity onPress={()=>openGallery()}> <Text>Select image</Text> </TouchableOpacity> <StatusBar style="auto" /> </View> ); }
额外保险措施(可选)
如果担心仍有非合规文件被选中,可在获取结果后校验文件的MIME类型,提前拦截:
if (!result.canceled) { const asset = result.assets[0]; // 检查文件类型是否为图片或视频 if (!asset.mimeType?.startsWith('image/') && !asset.mimeType?.startsWith('video/')) { console.log('请选择图片或视频文件'); return; } // 后续正常处理逻辑 }
内容的提问来源于stack exchange,提问作者Deepak Paleewal
相关产品推荐
相关产品推荐

