【问题标题】:Access All Media Files on Internal Storage访问内部存储上的所有媒体文件
【发布时间】:2014-05-18 18:35:49
【问题描述】:

我正在使用以下示例尝试将 android 设备上保存的图像和视频加载到自定义画廊活动中:

Access ordered images and video in same Cursor

虽然这适用于使用默认 Android 相机应用创建的图像和视频,但它似乎无法找到本地保存在该应用专用文件夹中的媒体文件(位于 Pictures/Name_of_app 中)

如何获取设备上的所有媒体文件?

private String[] projection = {
            MediaStore.Files.FileColumns._ID, 
            MediaStore.Files.FileColumns.DATA,
            MediaStore.Files.FileColumns.DATE_ADDED,
            MediaStore.Files.FileColumns.MEDIA_TYPE,
            MediaStore.Files.FileColumns.MIME_TYPE,
            MediaStore.Files.FileColumns.TITLE
    }; // used for query ContentResolver for mediafiles

    private String selection = MediaStore.Files.FileColumns.MEDIA_TYPE + "="
            + MediaStore.Files.FileColumns.MEDIA_TYPE_IMAGE
            + " OR " 
            + MediaStore.Files.FileColumns.MEDIA_TYPE + "="
            + MediaStore.Files.FileColumns.MEDIA_TYPE_VIDEO;  // used to select images and videos from contentResolver

    private Uri queryUri = MediaStore.Files.getContentUri("external");  

 cl = new CursorLoader(CustomizedGallery.this, queryUri, projection, selection, null, MediaStore.Files.FileColumns.DATE_ADDED + " DESC");

【问题讨论】:

  • 您能在图库应用中看到这些文件吗?您确定它们已添加到媒体商店吗?简单地创建它们不会自动将它们添加到媒体存储数据库中。 stackoverflow.com/questions/3300137/…
  • 感谢您的链接。实际上,我在图库应用程序中看不到图像。所以我会查看链接,看看它是否有效。
  • 我认为您也可以重新启动和/或重新安装您的设备作为触发媒体扫描器的快速方法。
  • 我在应用程序中保存图像时添加了这一行,现在它们出现在图库中! sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(imageAddedOrDeleted)));您可以添加您的评论作为答案吗?我会把它标记为正确的。

标签: android image video gallery android-cursorloader


【解决方案1】:

听起来文件尚未添加到 MediaStore 数据库。您可以通过查看图库应用来检查这一点 - 如果它们没有出现在那里,它们还没有在数据库中。

只需创建它们不会自动将它们添加到数据库 - 扫描发生在常规触发点(例如重新启动或重新安装外部存储时),或者您可以手动请求重新扫描。 p>

要请求扫描特定文件,您可以调用:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(newFile)));

更多信息在这里: How can I refresh MediaStore on Android?

【讨论】:

  • 2021 年 5 月:这不再适用于针对 Android 11 (R) 此常量在 API 级别 29 中已弃用。调用者应迁移到将项目直接插入 MediaStore,每次之后都会自动扫描它们突变。
猜你喜欢
  • 1970-01-01
  • 2012-10-17
  • 1970-01-01
  • 2019-12-15
  • 1970-01-01
  • 1970-01-01
  • 2021-03-29
  • 1970-01-01
  • 2012-04-19
相关资源
最近更新 更多