diff options
author | Danesh M <daneshm90@gmail.com> | 2014-12-11 17:40:09 -0800 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2015-03-23 13:39:27 -0700 |
commit | bb39dde8acd5cb512415732ddc20c43bd34bfd56 (patch) | |
tree | f142c5a16a8a69b9cad4b0f0ac94632a9b382803 | |
parent | 6ee517ba795118213ff640cb4994a7912d945bc6 (diff) | |
download | android_packages_providers_TelephonyProvider-bb39dde8acd5cb512415732ddc20c43bd34bfd56.tar.gz android_packages_providers_TelephonyProvider-bb39dde8acd5cb512415732ddc20c43bd34bfd56.tar.bz2 android_packages_providers_TelephonyProvider-bb39dde8acd5cb512415732ddc20c43bd34bfd56.zip |
MmsProvider : Add ability to query types in a conversation thread
Change-Id: I72836d517376587dd441839af2d1255829bf5806
-rw-r--r-- | src/com/android/providers/telephony/MmsSmsProvider.java | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/com/android/providers/telephony/MmsSmsProvider.java b/src/com/android/providers/telephony/MmsSmsProvider.java index 78caa00..00451c7 100644 --- a/src/com/android/providers/telephony/MmsSmsProvider.java +++ b/src/com/android/providers/telephony/MmsSmsProvider.java @@ -105,6 +105,7 @@ public class MmsSmsProvider extends ContentProvider { private static final int URI_UPDATE_THREAD_DATE = 24; private static final int URI_FAVOURITE_MESSAGES = 25; private static final int URI_UPDATE_THREAD_TOP = 26; + private static final int URI_CONVERSATION_TYPE_COUNT = 27; // Escape character private static final char SEARCH_ESCAPE_CHARACTER = '!'; @@ -232,6 +233,10 @@ public class MmsSmsProvider extends ContentProvider { "(part._id = words.source_id) AND " + "(words.table_to_use=2))"; + private static final String[] TYPE_COUNT_PROJECTION = new String[] { + MmsSms.TYPE_DISCRIMINATOR_COLUMN, "count(*) as " + MmsSms.TRANSPORT_TYPE_COUNT_COLUMN + }; + // This code queries the sms and mms tables and returns a unified result set // of text matches. We query the sms table which is pretty simple. We also // query the pdu, part and addr table to get the mms result. Notet we're @@ -335,6 +340,8 @@ public class MmsSmsProvider extends ContentProvider { URI_MATCHER.addURI( AUTHORITY, "conversations/#/recipients", URI_CONVERSATIONS_RECIPIENTS); + URI_MATCHER.addURI( + AUTHORITY, "conversations/type/#", URI_CONVERSATION_TYPE_COUNT); URI_MATCHER.addURI( AUTHORITY, "conversations/#/subject", @@ -454,7 +461,7 @@ public class MmsSmsProvider extends ContentProvider { break; case URI_CONVERSATIONS_MESSAGES: cursor = getConversationMessages(uri.getPathSegments().get(1), projection, - selection, sortOrder); + selection, sortOrder, false); break; case URI_FAVOURITE_MESSAGES: cursor = getFavourateMessages(uri.getPathSegments().get(1), projection, @@ -627,6 +634,11 @@ public class MmsSmsProvider extends ContentProvider { cursor = getFirstLockedMessage(projection, selection, sortOrder); break; } + case URI_CONVERSATION_TYPE_COUNT: { + cursor = getConversationMessages(uri.getPathSegments().get(2), projection, + selection, sortOrder, true); + break; + } default: throw new IllegalStateException("Unrecognized URI:" + uri); } @@ -1093,7 +1105,7 @@ public class MmsSmsProvider extends ContentProvider { */ private Cursor getCompleteConversations(String[] projection, String selection, String sortOrder) { - String unionQuery = buildConversationQuery(projection, selection, sortOrder); + String unionQuery = buildConversationQuery(projection, selection, sortOrder, false); return mOpenHelper.getReadableDatabase().rawQuery(unionQuery, EMPTY_STRING_ARRAY); } @@ -1122,7 +1134,7 @@ public class MmsSmsProvider extends ContentProvider { */ private Cursor getConversationMessages( String threadIdString, String[] projection, String selection, - String sortOrder) { + String sortOrder, boolean typeCountOnly) { try { Long.parseLong(threadIdString); } catch (NumberFormatException exception) { @@ -1132,8 +1144,7 @@ public class MmsSmsProvider extends ContentProvider { String finalSelection = concatSelections( selection, "thread_id = " + threadIdString); - String unionQuery = buildConversationQuery(projection, finalSelection, sortOrder); - + String unionQuery = buildConversationQuery(projection, finalSelection, sortOrder, typeCountOnly); return mOpenHelper.getReadableDatabase().rawQuery(unionQuery, EMPTY_STRING_ARRAY); } @@ -1537,7 +1548,7 @@ public class MmsSmsProvider extends ContentProvider { } private static String buildConversationQuery(String[] projection, - String selection, String sortOrder) { + String selection, String sortOrder, boolean typeCountOnly) { String[] mmsProjection = createMmsProjection(projection); SQLiteQueryBuilder mmsQueryBuilder = new SQLiteQueryBuilder(); @@ -1581,7 +1592,8 @@ public class MmsSmsProvider extends ContentProvider { outerQueryBuilder.setTables("(" + unionQuery + ")"); return outerQueryBuilder.buildQuery( - smsColumns, null, null, null, sortOrder, null); + typeCountOnly ? TYPE_COUNT_PROJECTION : projection, null, + typeCountOnly ? MmsSms.TYPE_DISCRIMINATOR_COLUMN : null, null, sortOrder, null); } @Override |