android - 无法显示设备库中的图像
问题描述
我正在尝试为 android 开发一个小应用程序。其中一项功能是显示来自设备的照片。我得到了带有照片的数组,但我无法显示它们。我可以看到在获取照片后会出现一个滚动,就像屏幕上有东西一样,但我看不到它。
import React, {useEffect, useState} from 'react';
import {
View,
Text,
Image,
FlatList,
PermissionsAndroid,
Platform,
} from 'react-native';
import CameraRoll from '@react-native-community/cameraroll';
const Upload = () => {
const [photos, setPhotos] = useState('');
const getPhotos = () => {
CameraRoll.getPhotos({
first: 500,
assetType: 'Photos',
groupName: 'Camera'
})
.then((res) => {
setPhotos(res.edges);
})
.catch((error) => {
console.log(error);
});
};
useEffect(
() => {console.log('photos', photos)}, [photos]
);
const askPermission = async () => {
if (Platform.OS === 'android') {
const result = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE,
{
title: 'Permission Explanation',
message: 'ReactNativeForYou would like to access your photos!',
},
);
if (result !== 'granted') {
console.log('Access to pictures was denied');
return;
} else {
getPhotos();
}
} else {
getPhotos();
}
};
useEffect(() => {
askPermission();
}, []);
return(
<View>
<FlatList
data={photos}
numColumns={3}
keyExtractor={(item, index) => index.toString()}
renderItem={({item}) => (
<Image
style={{
width: 30,
height: 30,
}}
source={{uri: item.node.image.uri}}
/>
)}
/>
</View>
)
};
export default Upload;
为了测试,我尝试了一些代码作为回报并得到了下一个结果:
{photos.length !== 0 ? <Image style={{width: 100, height: 100}} source={{uri: 'file:///storage/emulated/0/DCIM/Camera/IMG_20210417_011652.jpg'}} /> : null}
这不显示任何内容。
{photos.length !== 0 ? <Image style={{width: 100, height: 100}} source={{uri: photos[1].node.image.uri}} /> : null}
这也没有显示任何内容。
{photos.length !== 0 ? <Image style={{width: 100, height: 100}} source={{uri: 'https://miro.medium.com/max/700/1*mk1-6aYaf_Bes1E3Imhc0A.jpeg'}} /> : null}
这很好用。任何人都知道如何解决它?
解决方案
据我所知,我的问题的原因是在安卓版本中。我通过在 AndroidManifest.xml 中添加“android:requestLegacyExternalStorage="true"”解决了问题
推荐阅读
- r - 将 hms 矢量格式化为自定义格式
- azure - 如何配置 Apache Spark 以使用 BI 工具中的 Delta Lake 表?
- android - 无法在ionic中列出android目录和子目录中的所有文件和文件夹
- python-3.x - AttributeError: 使用 pip (python 3.6) 安装 Jupyter Notebook 时,模块 'typing' 没有属性 'NoReturn'
- python - 如何在使用子进程按顺序运行列表时仅在上一个文件结束时运行下一个文件
- javascript - 带有脚本的区块链的前端虚拟机和代码编辑器究竟是如何工作的?
- css - 您尝试使用标准 CSS 解析器解析 SCSS;使用 postcss-scss 解析器重试
- javascript - Firebase Firestore / React Native 聊天通知
- python - 从字典列表中删除键
- php - 有一个带有“加入”和“位置”的 Laravel 查询,以便获得基于过敏原限制的配方?