Don't let Threads.getOrCreateThreadId crash us
Bug: 17657656
Change-Id: Ifab9743d6dcd4c6c960abc006eb5288f753f429f
diff --git a/src/com/android/contacts/interactions/SmsInteractionsLoader.java b/src/com/android/contacts/interactions/SmsInteractionsLoader.java
index 295c99a..8d58712 100644
--- a/src/com/android/contacts/interactions/SmsInteractionsLoader.java
+++ b/src/com/android/contacts/interactions/SmsInteractionsLoader.java
@@ -66,8 +66,13 @@
// Retrieve the thread IDs
List<String> threadIdStrings = new ArrayList<>();
for (String phone : mPhoneNums) {
- threadIdStrings.add(String.valueOf(
- Telephony.Threads.getOrCreateThreadId(getContext(), phone)));
+ try {
+ threadIdStrings.add(String.valueOf(
+ Telephony.Threads.getOrCreateThreadId(getContext(), phone)));
+ } catch (Exception e) {
+ // Do nothing. Telephony.Threads.getOrCreateThreadId() throws exceptions when
+ // it can't find/create a threadId (b/17657656).
+ }
}
// Query the SMS database for the threads
@@ -94,6 +99,9 @@
* Return the most recent messages between a list of threads
*/
private Cursor getSmsCursorFromThreads(List<String> threadIds) {
+ if (threadIds.size() == 0) {
+ return null;
+ }
String selection = Telephony.Sms.THREAD_ID + " IN "
+ ContactInteractionUtil.questionMarks(threadIds.size());