如何使用MediaStore在GridView中显示所有图像

时间:2011-12-30 22:19:56

标签: android gridview cursor mediastore

我需要一些帮助才能找出我遇到的问题。我有一个应用程序将查询手机上的所有图像并在GridView中显示它们。我能够做到这一点并填充列表。问题是当我访问列表并从查询中获取项目中的信息时。光标告诉我该项目的文件路径为

/mnt/sdcard/images/media/file.jpg

但路径只是

/sdcard/images/media/file.jpg

这是我用来填充列表的代码。

        // Set up an array of the Thumbnail Image ID column we want
        String[] projection = {MediaStore.Images.Thumbnails._ID};
        // Create the cursor pointing to the SDCard
        //returns the cursor that checks the sdcard for Thumbnail id's
              cursor = managedQuery( 
                MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
                projection, 
                // Which columns to return
                null,
                // Return all rows
                null,
                MediaStore.Images.Thumbnails.IMAGE_ID);
              // Get the column index of the Thumbnails Image ID
              columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);

项目DO ACTUALLY显示,但当我从另一个光标检索它们时路径错误。 ?????? 我有点失落。

我在模拟器和物理设备上使用过它。同样的问题。 我得到一个ERROR,声明路径为NULL并且程序崩溃。

有没有办法可以让MediaStore查询EXTERNAL_CONTENT_URI并提供我需要的正确路径? 另外,当我在我的物理电话上使用它时,查询到我的SD卡上第一个目录的图像然后停止了,以及查询更多目录的方式吗?

1 个答案:

答案 0 :(得分:3)

你试过MediaStore.Images.Media.EXTERNAL_CONTENT_URI吗?

也弃用managedQuery(),请使用getContentResolver().query()