diff options
3 files changed, 40 insertions, 13 deletions
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java index 4528eab98..3beabd47d 100644 --- a/src/com/android/contacts/activities/PeopleActivity.java +++ b/src/com/android/contacts/activities/PeopleActivity.java @@ -72,6 +72,7 @@ import com.android.contacts.common.editor.SelectAccountDialogFragment; import com.android.contacts.group.GroupBrowseListFragment; import com.android.contacts.group.GroupBrowseListFragment.OnGroupBrowserActionListener; import com.android.contacts.group.GroupDetailFragment; +import com.android.contacts.incall.InCallPluginUtils; import com.android.contacts.interactions.ContactDeletionInteraction; import com.android.contacts.common.interactions.ImportExportDialogFragment; import com.android.contacts.common.interactions.ImportExportDialogFragment.ExportToSimThread; @@ -1796,16 +1797,9 @@ public class PeopleActivity extends ContactsActivity implements // plugin tab int pluginIndex = tabPosition - TabState.GROUPS; InCallPluginInfo pluginInfo = mPluginTabInfo.get(pluginIndex); - if (pluginInfo.mCallMethodInfo.mDefaultDirectorySearchIntent != null) { - try { - pluginInfo.mCallMethodInfo.mDefaultDirectorySearchIntent.send(); - } catch (PendingIntent.CanceledException e) { - Log.d(TAG, "directory search exception: ", e); - } - InCallMetricsHelper.increaseCount(this, - InCallMetricsHelper.Events.DIRECTORY_SEARCH, - pluginInfo.mCallMethodInfo.mComponent.flattenToString()); - } + InCallPluginUtils.startDirectoryDefaultSearch(this, + ContactsDataSubscription.get(this).mClient, + pluginInfo.mCallMethodInfo.mComponent); } else { Intent intent = new Intent(Intent.ACTION_INSERT, Contacts.CONTENT_URI); Bundle extras = getIntent().getExtras(); diff --git a/src/com/android/contacts/incall/InCallPluginUtils.java b/src/com/android/contacts/incall/InCallPluginUtils.java index bb0e71fed..29e162ddf 100644 --- a/src/com/android/contacts/incall/InCallPluginUtils.java +++ b/src/com/android/contacts/incall/InCallPluginUtils.java @@ -16,6 +16,7 @@ package com.android.contacts.incall; +import android.app.PendingIntent; import android.content.ComponentName; import android.content.ContentUris; import android.content.ContentValues; @@ -39,9 +40,14 @@ import com.android.contacts.common.util.DataStatus; import com.android.contacts.common.util.UriUtils; import com.android.phone.common.incall.CallMethodInfo; import com.android.phone.common.incall.ContactsDataSubscription; +import com.android.phone.common.incall.api.InCallQueries; import com.android.phone.common.incall.utils.CallMethodFilters; +import com.cyanogen.ambient.common.api.AmbientApiClient; +import com.cyanogen.ambient.common.api.Result; +import com.cyanogen.ambient.common.api.ResultCallback; import com.cyanogen.ambient.incall.extension.InCallContactInfo; +import com.cyanogen.ambient.incall.results.PendingIntentResult; import com.cyngn.uicommon.view.Snackbar; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; @@ -228,4 +234,30 @@ public class InCallPluginUtils { } return pluginMap; } + + public static void startDirectoryDefaultSearch(final Context context, AmbientApiClient client, + final ComponentName componentName) { + + InCallQueries.getDefaultDirectorySearchIntent(client, componentName).setResultCallback( + new ResultCallback() { + @Override + public void onResult(Result result) { + PendingIntentResult pendingIntentResult = (PendingIntentResult) result; + if (pendingIntentResult == null) { + Log.d(TAG, "directory search null"); + return; + } + try { + if (pendingIntentResult.intent != null) { + pendingIntentResult.intent.send(); + InCallMetricsHelper.increaseCount(context, + InCallMetricsHelper.Events.DIRECTORY_SEARCH, + componentName.flattenToString()); + } + } catch (PendingIntent.CanceledException e) { + Log.d(TAG, "directory search exception: ", e); + } + } + }); + } } diff --git a/src/com/android/contacts/list/PluginContactBrowseListFragment.java b/src/com/android/contacts/list/PluginContactBrowseListFragment.java index eb313d588..442d4e8c8 100644 --- a/src/com/android/contacts/list/PluginContactBrowseListFragment.java +++ b/src/com/android/contacts/list/PluginContactBrowseListFragment.java @@ -58,6 +58,7 @@ import com.android.contacts.common.list.ContactListItemView; import com.android.contacts.common.list.DefaultContactListAdapter; import com.android.contacts.common.list.ProfileAndContactsLoader; import com.android.contacts.incall.InCallPluginUtils; +import com.android.phone.common.incall.ContactsDataSubscription; import com.android.phone.common.incall.utils.CallMethodUtils; import java.util.List; @@ -662,9 +663,9 @@ public class PluginContactBrowseListFragment extends ContactEntryListFragment<Co .mCallMethodInfo.mLoginSubtitle)); } } else if (view == mEmptyView) { - if (mInCallPluginInfo.mCallMethodInfo.mDefaultDirectorySearchIntent != null) { - mInCallPluginInfo.mCallMethodInfo.mDefaultDirectorySearchIntent.send(); - } + InCallPluginUtils.startDirectoryDefaultSearch(getActivity(), + ContactsDataSubscription.get(getActivity()).mClient, + mInCallPluginInfo.mCallMethodInfo.mComponent); } } catch (PendingIntent.CanceledException e) { Log.e(TAG, "PendingIntent exception", e); |