android - 如何在移动设备(iOS 和 Android)上使用 Flutter 将照片/视频移动到相册?

标签 android ios flutter android-gallery

在移动设备(iOS 和 Android)上使用 Flutter,如何将媒体移动到相册?

我尝试在 iOS 上结合 gallery_saverphoto_manager:

  1. 我从 Recents 中读取了媒体 AssetEntity
  2. 使用 GallerySaver.saveImageAssetEntity 文件保存在相册下。此时,Recents 将同一媒体播放了两次,这是有道理的。
  3. 尝试使用 PhotoManager.editor.deleteWithIds 删除原始 AssetEntity 文件,并显示一个 native 弹出窗口,询问用户是否可以删除媒体。用户体验不佳...

有没有办法在不创建新文件的情况下更改 AssetEntity 相册?

最佳答案

2020 年 4 月更新

值得庆幸的是,该库的作者最近更新了它,以包含本答案中讨论的相册删除功能。你可以看到他们的pull request 。或者引用方法调用removeAssetsInAlbumREADME

问题

photo_manager图书馆正在使用 PHAssetChangeRequest的方法deleteAssets(_:) 。你可以看到这个here 。这将删除实际文件,而不仅仅是将其从相册中删除(更多信息请参见“说明”部分)

解决方案

解决方案是使用 PHAssetCollectionChangeRequest的方法。取决于您的用例:

将资源从相册移动到另一个相册

从相册中删除资源

将资源添加到相册

说明

删除 Assets 和移除 Assets 之间是有区别的。删除 Assets 文件是通过 PHAssetChangeRequest 完成的这会永久删除 Assets 文件及其从相册中的引用。但删除 Assets 是通过 PHAssetCollectionChangeRequest 完成的这会从专辑中删除 Assets 的引用(而不是文件),而不删除文件本身。检查这个answer .

该怎么办?如何应用该解决方案?

此部分现已过时,但保留用于 photo_manager 时的其他用例。无法使用,如需使用请引用本答案顶部photo_manager

<罢工> 您可以从以下选项中选择一个来解决您的问题:

  • 在库中查找我上面解释的相册方法 photo_manager ,也许就在那里? 编辑1我刚刚寻找PHAssetCollectionChangeRequest的方法。 Currently不支持/不使用。
  • 向库添加问题并要求作者进行上述更改
  • 通过 PR 或您自己的克隆版本将它们添加到库中 图书馆
  • 使用自己的平台 channel 并自行处理。

<罢工>

更改示例:

目前photo_manager uses PHAssetChangeRequest的方法deleteAssets(_:) :

[PHAssetChangeRequest deleteAssets:result];

这应该更改为使用 PHAssetCollectionChangeRequest的方法removeAssets(_:) :

[PHAssetCollectionChangeRequest removeAssets:result];

关于android - 如何在移动设备(iOS 和 Android)上使用 Flutter 将照片/视频移动到相册?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59804556/

相关文章:

java - 如何通过 MPandroidChart 在我的蜡烛图上添加突出显示文本?

flutter - 学习 flutter

macos - 如何在 Mac 中将 Flutter 永久添加到路径

firebase - 在 setData() 之后刷新 DocumentSnapshot 而无需额外查询

android - MapFragment 后面的 NavigationDrawer

android - 在 android 中访问其他(不是我的)谷歌帐户公共(public)日历

android - 拖放 Android 2.2

ios - 我是否需要添加 NSPhotoLibraryUsageDescription key info.plist。我没有使用任何与图像相关的库

objective-c - 在 objective-c 中获取启动时间

ios - 计算 .plist 字典项数(iOS SDK)