Loading src/com/android/contacts/editor/AggregationSuggestionEngine.java +30 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.os.Process; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Email; import android.provider.ContactsContract.CommonDataKinds.Nickname; import android.provider.ContactsContract.CommonDataKinds.Phone; Loading Loading @@ -115,6 +116,7 @@ public class AggregationSuggestionEngine extends HandlerThread { private ContentObserver mContentObserver; private Uri mSuggestionsUri; private int mSuggestionsLimit = 3; private boolean mPruneInvisibleContacts; public AggregationSuggestionEngine(Context context) { super("AggregationSuggestions", Process.THREAD_PRIORITY_BACKGROUND); Loading Loading @@ -150,6 +152,10 @@ public class AggregationSuggestionEngine extends HandlerThread { mSuggestionsLimit = suggestionsLimit; } public void setPruneInvisibleContacts (boolean pruneInvisibleContacts) { mPruneInvisibleContacts = pruneInvisibleContacts; } public void setListener(Listener listener) { mListener = listener; } Loading Loading @@ -377,6 +383,27 @@ public class AggregationSuggestionEngine extends HandlerThread { } public List<Suggestion> getSuggestions() { final ArrayList<Long> visibleContacts = new ArrayList<>(); if (mPruneInvisibleContacts) { final Uri contactFilterUri = Data.CONTENT_URI.buildUpon() .appendQueryParameter(Data.VISIBLE_CONTACTS_ONLY, "true") .build(); final ContentResolver contentResolver = mContext.getContentResolver(); final Cursor contactCursor = contentResolver.query(contactFilterUri, new String[]{Data.CONTACT_ID}, null, null, null); try { if (contactCursor != null) { while (contactCursor.moveToNext()) { final long contactId = contactCursor.getLong(0); visibleContacts.add(contactId); } } } finally { contactCursor.close(); } } ArrayList<Suggestion> list = Lists.newArrayList(); if (mDataCursor != null) { Suggestion suggestion = null; Loading @@ -384,6 +411,9 @@ public class AggregationSuggestionEngine extends HandlerThread { mDataCursor.moveToPosition(-1); while (mDataCursor.moveToNext()) { long contactId = mDataCursor.getLong(DataQuery.CONTACT_ID); if (mPruneInvisibleContacts && !visibleContacts.contains(contactId)) { continue; } if (contactId != currentContactId) { suggestion = new Suggestion(); suggestion.contactId = contactId; Loading src/com/android/contacts/quickcontact/QuickContactActivity.java +1 −0 Original line number Diff line number Diff line Loading @@ -1316,6 +1316,7 @@ public class QuickContactActivity extends ContactsActivity mAggregationSuggestionEngine.setListener(this); mAggregationSuggestionEngine.setSuggestionsLimit(getResources().getInteger( R.integer.quickcontact_suggestions_limit)); mAggregationSuggestionEngine.setPruneInvisibleContacts(true); mAggregationSuggestionEngine.start(); } Loading Loading
src/com/android/contacts/editor/AggregationSuggestionEngine.java +30 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Handler; import android.os.HandlerThread; import android.os.Message; import android.os.Process; import android.provider.ContactsContract; import android.provider.ContactsContract.CommonDataKinds.Email; import android.provider.ContactsContract.CommonDataKinds.Nickname; import android.provider.ContactsContract.CommonDataKinds.Phone; Loading Loading @@ -115,6 +116,7 @@ public class AggregationSuggestionEngine extends HandlerThread { private ContentObserver mContentObserver; private Uri mSuggestionsUri; private int mSuggestionsLimit = 3; private boolean mPruneInvisibleContacts; public AggregationSuggestionEngine(Context context) { super("AggregationSuggestions", Process.THREAD_PRIORITY_BACKGROUND); Loading Loading @@ -150,6 +152,10 @@ public class AggregationSuggestionEngine extends HandlerThread { mSuggestionsLimit = suggestionsLimit; } public void setPruneInvisibleContacts (boolean pruneInvisibleContacts) { mPruneInvisibleContacts = pruneInvisibleContacts; } public void setListener(Listener listener) { mListener = listener; } Loading Loading @@ -377,6 +383,27 @@ public class AggregationSuggestionEngine extends HandlerThread { } public List<Suggestion> getSuggestions() { final ArrayList<Long> visibleContacts = new ArrayList<>(); if (mPruneInvisibleContacts) { final Uri contactFilterUri = Data.CONTENT_URI.buildUpon() .appendQueryParameter(Data.VISIBLE_CONTACTS_ONLY, "true") .build(); final ContentResolver contentResolver = mContext.getContentResolver(); final Cursor contactCursor = contentResolver.query(contactFilterUri, new String[]{Data.CONTACT_ID}, null, null, null); try { if (contactCursor != null) { while (contactCursor.moveToNext()) { final long contactId = contactCursor.getLong(0); visibleContacts.add(contactId); } } } finally { contactCursor.close(); } } ArrayList<Suggestion> list = Lists.newArrayList(); if (mDataCursor != null) { Suggestion suggestion = null; Loading @@ -384,6 +411,9 @@ public class AggregationSuggestionEngine extends HandlerThread { mDataCursor.moveToPosition(-1); while (mDataCursor.moveToNext()) { long contactId = mDataCursor.getLong(DataQuery.CONTACT_ID); if (mPruneInvisibleContacts && !visibleContacts.contains(contactId)) { continue; } if (contactId != currentContactId) { suggestion = new Suggestion(); suggestion.contactId = contactId; Loading
src/com/android/contacts/quickcontact/QuickContactActivity.java +1 −0 Original line number Diff line number Diff line Loading @@ -1316,6 +1316,7 @@ public class QuickContactActivity extends ContactsActivity mAggregationSuggestionEngine.setListener(this); mAggregationSuggestionEngine.setSuggestionsLimit(getResources().getInteger( R.integer.quickcontact_suggestions_limit)); mAggregationSuggestionEngine.setPruneInvisibleContacts(true); mAggregationSuggestionEngine.start(); } Loading