【问题标题】:scanning image files from local storage using query sometimes return an empty cursor使用查询从本地存储扫描图像文件有时会返回空游标
【发布时间】:2016-01-11 18:09:39
【问题描述】:

我正在尝试使用 getContentResolver().query(...) 从内部或外部存储中列出所有图像文件,这是可行的。 奇怪的是,有时该方法返回一个空游标,这怎么会发生? 我也尝试了这里建议的另一个 to list out all images from internal or external storage 但结果是一样的,有时返回的光标是空的。 任何想法?这是我的代码:

protected Exception doInBackground(Object... params) {
    try {
        Cursor cursor = getImageCursor();
        cursor.moveToFirst();
        mImageSources.clear();

        for (int i = cursor.getCount()-1; i > 0; i--) {
            cursor.moveToPosition(i);
            mImageSources.add(
                    new CameraRollItem(
                            Uri.parse(cursor.getString(1)),
                            cursor.getString(1),
                            cursor.getString(3),
                            i
                    ));
        }
        cursor.close();
    } catch (Exception e) {
        e.printStackTrace();
        return e;
    }
    return null;
}

private Cursor getImageCursor() {
    Cursor cursor = null;
    // It have to be matched with the directory in SDCard
    cursor = mContext
            .getContentResolver()
            .query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
    // if cursor is null, then try to read image from internal memory
    if (cursor == null)
        cursor = mContext
                .getContentResolver()
                .query(MediaStore.Images.Media.INTERNAL_CONTENT_URI, null, null, null, null);

    return cursor;
}

【问题讨论】:

    标签: android


    【解决方案1】:

    在浪费我的时间解决这个问题之后,我已经找到了答案。根据游标文档here,如果您使用可重用游标,请不要关闭游标。调用 close() 方法会使光标失效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-23
      • 2012-11-29
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2022-11-05
      • 1970-01-01
      相关资源
      最近更新 更多