Android:过滤图库结果(日期范围)

时间:2013-08-19 16:41:52

标签: android image android-intent filter gallery

我想让用户从手机图库中选择一些图像,然后将它们加载到应用程序中。使用Intent.ACTION_PICK和startActivityForResult(intent,SELECT_PHOTO)这似乎是一项简单的任务。

但是,我需要按日期范围过滤图库中的结果。我需要设置一个初始日期和结束日期,只显示这两个日期之间的照片(或者可以选择)。有谁知道如何实现这一目标?我无论如何都无法过滤画廊的结果。

谢谢!

3 个答案:

答案 0 :(得分:5)

我也遇到了这个任务,经过几个小时的尝试终于解决了它:)。 你需要使用媒体商店并查询它从日期和日期传递的时间长,这将返回一个位图数组下面是代码,对我有用。

final String[] columns = { MediaStore.Images.Media.DATA,
                MediaStore.Images.Media._ID,
                MediaStore.Images.Media.DATE_TAKEN,
                MediaStore.Images.Media.DATE_ADDED };
final String orderBy = MediaStore.Images.Media._ID;
Cursor imagecursor = managedQuery(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns,
            MediaStore.Images.Media.DATE_TAKEN + ">? and "
                + MediaStore.Images.Media.DATE_TAKEN + "<?",
                new String[] { "" + from, "" + to }, orderBy + " DESC");
int image_column_index = imagecursor.getColumnIndex(MediaStore.Images.Media._ID);
this.count = imagecursor.getCount();
Log.w("", "count is :" + count);
this.thumbnails = new Bitmap[this.count];
for (int i = 0; i < this.count; i++) {
            imagecursor.moveToPosition(i);
            int id = imagecursor.getInt(image_column_index);
            thumbnails[i] = MediaStore.Images.Thumbnails.getThumbnail(ctx
                    .getApplicationContext().getContentResolver(), id,
                    MediaStore.Images.Thumbnails.MICRO_KIND, null);
     }

imagecursor.close();

答案 1 :(得分:0)

查询以在日期之间获取图像:

private Cursor cursorVar;

Calendar fromDateVar = Calendar.getInstance();
fromDateVar.set(2015, 5, 30);

Calendar toDateVar = Calendar.getInstance();
toDateVar.set(2016, 5, 30);

cursorVar = getContentResolver().query(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null,
        MediaStore.Images.Media.DATE_TAKEN + ">? and "
                + MediaStore.Images.Media.DATE_TAKEN + "<?",
        new String[] {fromDateVar.getTimeInMillis() + "", toDateVar.getTimeInMillis() + ""},
        MediaStore.Images.Media.DATE_TAKEN + " DESC");

答案 2 :(得分:0)

Calendar fromDateVar = Calendar.getInstance();
fromDateVar.set(2020, 01, 30);

Calendar toDateVar = Calendar.getInstance();
toDateVar.set(2020, 05, 30);


cursor = getContentResolver().query(
        MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection,
        MediaStore.Images.Media.DATE_TAKEN + ">? and "
                + MediaStore.Images.Media.DATE_TAKEN + "<?",
        new String[]{fromDateVar.getTimeInMillis() + "", toDateVar.getTimeInMillis() + ""},
        MediaStore.Images.Media.DATE_TAKEN + " DESC");


column_index_data = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
column_index_folder_name = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
while (cursor.moveToNext()) {
    absolutePathOfImage = cursor.getString(column_index_data);
    listOfAllImages.add(absolutePathOfImage);

}