【问题标题】:MediaStore cursor not displaying non-media files in Android 10MediaStore 光标未在 Android 10 中显示非媒体文件
【发布时间】:2020-11-10 11:43:15
【问题描述】:

我正在尝试在外部存储中获取文件并在应用程序中显示。我能够毫无问题地获取媒体文件,但我无法在 Android 10 中获取非媒体文件。附加了用于获取 pdf 的 sn-p 波纹管。当我看到计数时,即使我的外部存储中有 pdf 文件,它也是 0。 Android 10+ 正在发生这种情况

 Cursor cursor = getContext().getContentResolver().query(
                    MediaStore.Files.getContentUri("external"), // Table to query
                    new String[]{MediaStore.Files.FileColumns.DATA}, // file location
                    MediaStore.Files.FileColumns.MIME_TYPE + "=?", // selection clause
                    new String[]{ MimeTypeMap.getSingleton().getMimeTypeFromExtension("pdf") }, // selection arguments
                    MediaStore.Files.FileColumns.DATE_MODIFIED + " DESC" // ordering)
            ); 
  

【问题讨论】:

  • .DATA 列在 Android 10 上不可用。
  • 即使我使用不同的投影也无法正常工作。我认为它与 .DATA 无关
  • 在所有参数中加入null。这些 pdf 文件到底在哪里?

标签: java android file mediastore database-cursor


【解决方案1】:

自 Android 10 起,您无法使用 MediaStore 加载除媒体(音频、视频、图像)以外的文件。

打开文档的官方方法是使用ACTION_OPEN_DOCUMENT 并让用户从文件选择器中选择一个文件。
检查文档: https://developer.android.com/training/data-storage/shared/media#other-file-types

【讨论】:

    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-19
    • 2020-04-12
    • 2018-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多