Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 78c46117 authored by Ken Wakasa's avatar Ken Wakasa
Browse files

Fix LatinIME crashing due to crash in Contacts DB

bug: 2895391
Change-Id: I3a0628942b74556f8b600b63ebc5d808fb2f0abd
parent 17dc363a
Loading
Loading
Loading
Loading
+51 −42
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ public class ContactsDictionary extends ExpandableDictionary {
        Contacts.DISPLAY_NAME,
    };

    private static final String TAG = "ContactsDictionary";

    /**
     * Frequency for contacts information into the dictionary
     */
@@ -80,11 +82,15 @@ public class ContactsDictionary extends ExpandableDictionary {

    @Override
    public void loadDictionaryAsync() {
        try {
            Cursor cursor = getContext().getContentResolver()
                    .query(Contacts.CONTENT_URI, PROJECTION, null, null, null);
            if (cursor != null) {
                addWords(cursor);
            }
        } catch(IllegalStateException e) {
            Log.e(TAG, "Contacts DB is having problems");
        }
        mLastLoadedContacts = SystemClock.uptimeMillis();
    }

@@ -92,6 +98,7 @@ public class ContactsDictionary extends ExpandableDictionary {
        clearDictionary();

        final int maxWordLength = getMaxWordLength();
        try {
            if (cursor.moveToFirst()) {
                while (!cursor.isAfterLast()) {
                    String name = cursor.getString(INDEX_NAME);
@@ -126,18 +133,20 @@ public class ContactsDictionary extends ExpandableDictionary {
                                    if (!TextUtils.isEmpty(prevWord)) {
                                        // TODO Do not add email address
                                        // Not so critical
                                    super.setBigram(prevWord, word, FREQUENCY_FOR_CONTACTS_BIGRAM);
                                        super.setBigram(prevWord, word,
                                                FREQUENCY_FOR_CONTACTS_BIGRAM);
                                    }
                                    prevWord = word;
                                }
                            }
                        }
                    }

                    cursor.moveToNext();
                }
            }
            cursor.close();
        } catch(IllegalStateException e) {
            Log.e(TAG, "Contacts DB is having problems");
        }
    }

}