首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Expo: MediaLibrary.createAlbumAsync正在创建多个同名相册

Expo: MediaLibrary.createAlbumAsync正在创建多个同名相册
EN

Stack Overflow用户
提问于 2020-04-10 09:54:50
回答 3查看 1.3K关注 0票数 1

我的函数:

代码语言:javascript
运行
复制
async function takePhotoNStore(){
    if(cameraRef){
        let picture = await cameraRef.current.takePictureAsync();
        const asset = await MediaLibrary.createAssetAsync(picture.uri);
        await MediaLibrary.createAlbumAsync('Expo', asset, false);
    }
}

我正在尝试创建一个名为"Expo“的相册,但每次我拍一张新照片时,它都会创建多个"Expo”相册。

EN

回答 3

Stack Overflow用户

发布于 2020-08-12 01:03:46

您需要使用以下命令检查相册是否已经存在:

代码语言:javascript
运行
复制
MediaLibrary.getAlbumAsync(albumName)

如果是这种情况,您可以使用以下命令添加您的资产:

代码语言:javascript
运行
复制
MediaLibrary.addAssetsToAlbumAsync(assets, album, copyAssets)

如果没有,就像你做的那样创建它。

您将不会有任何复制!:)

票数 1
EN

Stack Overflow用户

发布于 2020-08-12 09:29:06

将来可以用来作参考

代码语言:javascript
运行
复制
_saveToCameraRollAsync = async () => {
    try {
        let result = await captureRef(this.pageView, {
            format: 'png',
            quality: 0.9
        });

       
        const cachedAsset = await MediaLibrary.createAssetAsync(result);
        // saved the asset uri

        const album = await MediaLibrary.getAlbumAsync('GWA');
        // check if the album if exist if return null you need to create an album.
      
        if (album === null) {
            // insert an album name with image
            const asset = await MediaLibrary.createAssetAsync(result);
            MediaLibrary.createAlbumAsync('GWA', asset)
                .then(() => {
                    console.log('Album created!');
                    Alert.alert('Image has been saved')
                    this.setState({ cameraRollUri: asset });
                })
                .catch(error => {
                    Alert.alert(`Opps there's something wrong`)
                    console.log('err', error);
                });
        } else {
            // if album exist asset added
            let assetAdded = await MediaLibrary.addAssetsToAlbumAsync(
                [cachedAsset],
                album,
                false
            );
            if (assetAdded === true) {
                this.getAssetFromAlbum(album);
            } else {
                console.log("ASSET ADD ERROR");
            }
        }

    }
    catch (snapshotError) {
        console.error(snapshotError);
    }
};

getAssetFromAlbum = async album => {
    //function
    const assetResult = await MediaLibrary.getAssetsAsync({
        first: 1,
        album: album,
        sortBy: MediaLibrary.SortBy.creationTime,
    });
    const asset = await assetResult.assets[0];

    this.setState({ image_uri: asset.uri });
};
票数 0
EN

Stack Overflow用户

发布于 2020-08-25 03:04:50

代码语言:javascript
运行
复制
saveFile = async (fileUri) => {
    const { status } = await Permissions.askAsync(Permissions.CAMERA_ROLL);
    if (status === "granted") {
      const cachedAsset = await MediaLibrary.createAssetAsync(fileUri);
      
      const albumName = "xyz';
      const album = await MediaLibrary.getAlbumAsync(albumName)
      
      if(album){
        await MediaLibrary.addAssetsToAlbumAsync([cachedAsset], album, false);
      }else{
        const asset = await MediaLibrary.createAssetAsync(fileUri);
        await MediaLibrary.createAlbumAsync(albumName, asset);
      }
    }
  };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61132921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档