android gallery:获取所有图片的ID

时间:2012-09-11 06:21:12

标签: android image-gallery

  

可能重复:
  Fetch all Images from Android Photo Gallery

我想从图库中获取所有图像的id,然后将其存储在整数数组中。我找到了一个代码,在点击它之后我可以获得图像的id,但我不想这样做。我想在不点击图像的情况下获取所有图像的id,然后将其存储在整数数组中。请有人帮助我。

2 个答案:

答案 0 :(得分:0)

您可以使用内容解析器执行此操作:

Cursor cur = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[] {ImageColumns._ID}, null, null,null);

然后使用此游标中获得的数据形成int数组。

if ((cur != null) && cur.moveToFirst()) {
        int[] idsArray = new int[cur.getCount()];
        for (int i = 0; i < cur.getCount(); i++) {
            idsArray[i] = cur.getInt(cur.getColumnIndex(ImageColumns._ID));
            cur.moveToNext();
        }

    }
    cur.close();

编辑:

final Cursor cur = context.getContentResolver().query(CameraConstants.IMAGE_STORAGE_PATH_EXTERNAL, null, null, null, ImageColumns.DATE_TAKEN + " DESC");
    final ArrayList<String> urlList = new ArrayList<String>();

    if ((cur != null) && cur.moveToFirst()) {
        final int count = cur.getCount();
        for (int i = 0; i < count; i++) {
            urlList.add(cursor.getString(cursor.getColumnIndex(MediaColumns.DATA));
            cur.moveToNext();
        }
    }
    cur.close();

然后使用urlList,如下所示:

for(String imageUrl: urlList){
 final BitmapFactory.Options options = new BitmapFactory.Options();
    options.inJustDecodeBounds = true;
    InputStream is = null;
    is = new FileInputStream(new File(imageUrl));

    BitmapFactory.decodeStream(is, null, options);
 int width = options.outWidth;
 int height = options.outHeight

}

答案 1 :(得分:0)

String[] projection = new String[] { ImageColumns._ID,
                    ImageColumns.TITLE, ImageColumns.DATA,
                    ImageColumns.MIME_TYPE, ImageColumns.SIZE };
Cursor cur = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            projection, null, null, null);
while (cur.moveToNext()) {
    //fill data
}

我还包括了其他可能感兴趣的领域。