【问题标题】:How to get all images from the phone storage into my application?如何从手机存储中获取所有图像到我的应用程序中?
【发布时间】:2011-11-28 10:47:53
【问题描述】:

我的 Android 应用程序的一个活动需要显示手机中的所有图片,包括 sd 卡、相机图片、下载等。如何使用代码执行此操作?是通过 Intent 还是其他一些可能的方式? (例如在 google+ 应用程序中,它会显示手机中的所有图片)。

【问题讨论】:

标签: android android-gallery


【解决方案1】:

您需要使用内容解析器查询内容数据库

String[] mProjection = {MediaStore.Images.Media._ID,
                                MediaStore.Images.Media.DATA};

mCursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                               mProjection,
                               null,
                               null,
                               MediaStore.Images.Media.DEFAULT_SORT_ORDER);

使用上面的 mCursor,您可以获得外部存储设备上存在的图像的路径。

您可能需要GridView,而GridView 的适配器可以使用光标一张一张地获取图像。

【讨论】:

    【解决方案2】:

    最好的方法是使用MediaStore.Images 内容提供程序。这将显示画廊应用程序中出现的所有图像。但是,它不会显示隐藏的图像或包含.nomedia 文件的文件夹中的图像。如果你也想显示这些,你必须自己递归扫描文件系统(参见File)。

    【讨论】:

    • 我认为你不需要。您应该尝试一下,看看是否有任何安全异常。
    • 这方面的一个例子会很有帮助。 MediaStore.Images.Media.EXTERNAL_CONTENT_URI 只显示外部 sd 卡中的图像,而不是文件夹内的图像。请提供使用递归扫描文件系统的示例。
    【解决方案3】:

    您只想打开现有的 Android 图库应用程序吗?

    如果你不这样做,你总是可以使用这个 MediaStore 类。它包含您需要的所有信息。 http://developer.android.com/reference/android/provider/MediaStore.html

    【讨论】:

    • 不,如果您只是从 SD 卡读取数据,则不会。写入 sdcard 将是另一回事,但在你的情况下,你没有这样做,所以你没问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-25
    • 2021-07-02
    • 2021-04-05
    • 2021-06-21
    • 2020-10-29
    相关资源
    最近更新 更多