Example usage for android.support.v4.content ContentResolverCompat query

List of usage examples for android.support.v4.content ContentResolverCompat query

Introduction

In this page you can find the example usage for android.support.v4.content ContentResolverCompat query.

Prototype

public static Cursor query(ContentResolver resolver, Uri uri, String[] projection, String selection,
        String[] selectionArgs, String sortOrder, CancellationSignal cancellationSignal) 

Source Link

Document

Query the given URI, returning a Cursor over the result set with optional support for cancellation.

Usage

From source file:cn.tangxb.imageselector.PhotoModelTaskLoader.java

@Override
public ArrayList<PhotoModel> loadInBackground() {
    synchronized (this) {
        if (isLoadInBackgroundCanceled()) {
            throw new OperationCanceledException();
        }/*ww w .j a va2 s  .c  o  m*/
        mCancellationSignal = new CancellationSignal();
    }
    try {
        Cursor cursor = ContentResolverCompat.query(getContext().getContentResolver(),
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                new String[] { MediaStore.Images.ImageColumns.DATA, MediaStore.Images.ImageColumns.DATE_ADDED,
                        MediaStore.Images.ImageColumns.SIZE },
                null, null, MediaStore.Images.ImageColumns.DATE_ADDED, mCancellationSignal);
        if (cursor != null) {
            try {
                // Ensure the cursor window is filled.
                cursor.getCount();
                cursor.registerContentObserver(mObserver);
                mData = new ArrayList<>();

                if (cursor == null || !cursor.moveToNext())
                    return mData;
                cursor.moveToLast();
                do {
                    if (cursor.getLong(cursor.getColumnIndex(MediaStore.Images.ImageColumns.SIZE)) > 1024
                            * 10) {
                        PhotoModel photoModel = new PhotoModel();
                        photoModel.setOriginalPath(
                                cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA)));
                        mData.add(photoModel);
                    }
                } while (cursor.moveToPrevious());
            } catch (RuntimeException ex) {
                cursor.close();
                throw ex;
            }
        }
        return mData;
    } finally {
        synchronized (this) {
            mCancellationSignal = null;
        }
    }
}