From 091314b7ea73e774ce96c981bd7007c94ad80e30 Mon Sep 17 00:00:00 2001 From: George Mount Date: Fri, 15 Mar 2013 07:52:15 -0700 Subject: [PATCH] Use cancellationSignal only on API Level 16 and above. Bug 8390238 Change-Id: If2dacb1eb74e531d004b6f281d32a81f7cd59139 --- .../src/com/android/gallery3d/common/ApiHelper.java | 3 +++ src/com/android/photos/data/PhotoProvider.java | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java index 13d48fd2c..b0b1fe070 100644 --- a/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java +++ b/gallerycommon/src/com/android/gallery3d/common/ApiHelper.java @@ -185,6 +185,9 @@ public class ApiHelper { public static final boolean HAS_ROTATION_ANIMATION = hasField(WindowManager.LayoutParams.class, "rotationAnimation"); + public static final boolean HAS_CANCELLATION_SIGNAL = + Build.VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN; + public static int getIntFieldIfExists(Class klass, String fieldName, Class obj, int defaultVal) { try { diff --git a/src/com/android/photos/data/PhotoProvider.java b/src/com/android/photos/data/PhotoProvider.java index 8413206b1..2455580f0 100644 --- a/src/com/android/photos/data/PhotoProvider.java +++ b/src/com/android/photos/data/PhotoProvider.java @@ -30,6 +30,8 @@ import android.net.Uri; import android.os.CancellationSignal; import android.provider.BaseColumns; +import com.android.gallery3d.common.ApiHelper; + import java.util.List; /** @@ -357,9 +359,7 @@ public class PhotoProvider extends SQLiteContentProvider { selection = addIdToSelection(match, selection); selectionArgs = addIdToSelectionArgs(match, uri, selectionArgs); String table = getTableFromMatch(match, uri); - SQLiteDatabase db = getDatabaseHelper().getReadableDatabase(); - return db.query(false, table, projection, selection, selectionArgs, null, null, sortOrder, - null, cancellationSignal); + return query(table, projection, selection, selectionArgs, sortOrder, cancellationSignal); } @Override @@ -563,4 +563,15 @@ public class PhotoProvider extends SQLiteContentProvider { throw new IllegalArgumentException("Operation not allowed on an existing row."); } } + + protected Cursor query(String table, String[] columns, String selection, + String[] selectionArgs, String orderBy, CancellationSignal cancellationSignal) { + SQLiteDatabase db = getDatabaseHelper().getReadableDatabase(); + if (ApiHelper.HAS_CANCELLATION_SIGNAL) { + return db.query(false, table, columns, selection, selectionArgs, null, null, + orderBy, null, cancellationSignal); + } else { + return db.query(table, columns, selection, selectionArgs, null, null, orderBy); + } + } } -- 2.11.0