Thread with no recipients getting created

Bug 6453254

Don't allow a thread to be created with no recipients. Return null so
the situation can be dealt with by the caller.

Change-Id: Idd82ac5967524287e894ecd72b2bc01a1d3f639f
diff --git a/src/com/android/providers/telephony/MmsProvider.java b/src/com/android/providers/telephony/MmsProvider.java
index 7f259d7..5e3e1f1 100644
--- a/src/com/android/providers/telephony/MmsProvider.java
+++ b/src/com/android/providers/telephony/MmsProvider.java
@@ -353,7 +353,7 @@
             Long threadId = values.getAsLong(Mms.THREAD_ID);
             String address = values.getAsString(CanonicalAddressesColumns.ADDRESS);
 
-            if (((threadId == null) || (threadId == 0)) && (address != null)) {
+            if (((threadId == null) || (threadId == 0)) && (!TextUtils.isEmpty(address))) {
                 finalValues.put(Mms.THREAD_ID, Threads.getOrCreateThreadId(getContext(), address));
             }
 
diff --git a/src/com/android/providers/telephony/MmsSmsProvider.java b/src/com/android/providers/telephony/MmsSmsProvider.java
index b304166..19a612c 100644
--- a/src/com/android/providers/telephony/MmsSmsProvider.java
+++ b/src/com/android/providers/telephony/MmsSmsProvider.java
@@ -462,7 +462,9 @@
                 throw new IllegalStateException("Unrecognized URI:" + uri);
         }
 
-        cursor.setNotificationUri(getContext().getContentResolver(), MmsSms.CONTENT_URI);
+        if (cursor != null) {
+            cursor.setNotificationUri(getContext().getContentResolver(), MmsSms.CONTENT_URI);
+        }
         return cursor;
     }
 
@@ -613,8 +615,12 @@
         Set<Long> addressIds = getAddressIds(recipients);
         String recipientIds = "";
 
-        // optimize for size==1, which should be most of the cases
-        if (addressIds.size() == 1) {
+        if (addressIds.size() == 0) {
+            Log.e(LOG_TAG, "getThreadId: NO receipients specified -- NOT creating thread",
+                    new Exception());
+            return null;
+        } else if (addressIds.size() == 1) {
+            // optimize for size==1, which should be most of the cases
             for (Long addressId : addressIds) {
                 recipientIds = Long.toString(addressId);
             }
diff --git a/src/com/android/providers/telephony/SmsProvider.java b/src/com/android/providers/telephony/SmsProvider.java
index 063b8fa..15e008d 100644
--- a/src/com/android/providers/telephony/SmsProvider.java
+++ b/src/com/android/providers/telephony/SmsProvider.java
@@ -434,7 +434,7 @@
             Long threadId = values.getAsLong(Sms.THREAD_ID);
             String address = values.getAsString(Sms.ADDRESS);
 
-            if (((threadId == null) || (threadId == 0)) && (address != null)) {
+            if (((threadId == null) || (threadId == 0)) && (!TextUtils.isEmpty(address))) {
                 values.put(Sms.THREAD_ID, Threads.getOrCreateThreadId(
                                    getContext(), address));
             }