【问题标题】:Android MediaStore API to trash an imageAndroid MediaStore API 垃圾图像
【发布时间】:2020-01-27 06:36:10
【问题描述】:

我的应用是使用默认相机应用拍摄的照片的照片管理器。我希望它将照片发送到“垃圾箱”,以便以后可以在默认照片应用程序中从垃圾箱中恢复它们。

API 文档中的示例显示了完全删除图像:https://developer.android.com/training/data-storage/shared/media#remove-item,但这会立即删除图像并且不会将图像发送到垃圾箱。

在 2019 年初的短短 1 个月期间,MediaStore 上似乎有一个垃圾方法,但在之后的一个月就被弃用了:https://github.com/aosp-mirror/platform_frameworks_base/blame/2d330f6fa8bc0888a27bf1729844be8b0fe71c8b/core/java/android/provider/MediaStore.java#L843

您使用什么 API 将使用相机应用拍摄的照片发送到垃圾箱?

编辑:这是一个屏幕截图,以澄清我所说的“垃圾”的意思。

【问题讨论】:

  • 目前还不清楚您所说的垃圾是什么意思,以及文件在垃圾期间的存放位置。
  • 我的意思是当你在默认的 Android 照片应用程序中删除照片时,它们会去哪里。当您按下照片的“垃圾桶”图标时。要查看“已删除”的照片,请单击“照片”应用左上角的汉堡图标,然后按“已删除”菜单项。添加了一个屏幕截图来澄清这一点。
  • 如果您认为“他们去某个地方”,那么请找出在哪里。可能是该应用程序只记住哪些文件被丢弃,但将它们留在原处。您可以通过文件管理器查找。或者使用另一个照片应用程序来查看它是否知道该垃圾。我认为没有。
  • 你试过 values.put(MediaColumns.IS_TRASHED, 1); ?如果那个垃圾()方法消失了,那么将它复制到你的代码中并使用它。你试过了吗?
  • @blackapps:我想你的意思是像弃用的垃圾()方法在做什么? MediaColumns.DATE_EXPIRES 常量也已被弃用,因此他们显然试图阻止这一点。无论如何,我尝试使用 values.put("is_trashed", 1);,同样适用于 "date_expires"。不工作。照片实际上从照片应用程序中消失了,但没有出现在垃圾箱中。但我感谢您的建议,谢谢!

标签: android mediastore


【解决方案1】:

没有这样的 API。每个应用程序都有自己的私有垃圾桶实现,您无法与之交互。

UPD:垃圾 API 已添加到 android R 预览版中。 见https://developer.android.com/reference/android/provider/MediaStore#createTrashRequest(android.content.ContentResolver,%20java.util.Collection%3Candroid.net.Uri%3E,%20boolean)

【讨论】:

    【解决方案2】:

    删除或取消删除文件或文件夹

    回收或取消回收资源的典型工作流程如下:

    • 请求资源元数据。
    • 检查 isTrashable 是否为真。
    • (可选)检查 isTrashed 是否为真。在一个已经调用垃圾 丢弃的资源无效。
    • 调用 DriveResourceClient.trash 或 DriveResourceClient.untrash 为 适用

      if (!metadata.isTrashable()) {
      showMessage(R.string.trashable_error);
      return;}
      
      DriveResource driveResource = metadata.getDriveId().asDriveResource();
      Task<Void> toggleTrashTask;
      if (metadata.isTrashed()) {
          toggleTrashTask = mDriveResourceClient.untrash(driveResource);
      } else {
          toggleTrashTask = mDriveResourceClient.trash(driveResource);
      }
      

    您可以点击以下链接了解详情 -

    trash and untrash

    【讨论】:

    • 谢谢,但我认为这不适用。正如标题和标签所说,我在问如何从 MediaStore API 中删除照片,但您建议的似乎是针对 Google Drive API。
    猜你喜欢
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多