summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDanesh M <daneshm90@gmail.com>2014-12-11 17:40:09 -0800
committerSteve Kondik <steve@cyngn.com>2015-03-23 13:39:27 -0700
commitbb39dde8acd5cb512415732ddc20c43bd34bfd56 (patch)
treef142c5a16a8a69b9cad4b0f0ac94632a9b382803
parent6ee517ba795118213ff640cb4994a7912d945bc6 (diff)
downloadandroid_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.java26
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