summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/provider/ContactsContract.java32
-rw-r--r--core/java/android/widget/QuickContactBadge.java18
-rw-r--r--core/java/com/android/internal/widget/ContactHeaderWidget.java7
3 files changed, 54 insertions, 3 deletions
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index 74849643d963..9138da2f77da 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -5543,6 +5543,14 @@ public final class ContactsContract {
public static final int MODE_LARGE = 3;
/**
+ * Extra used to specify the last selected tab index of the Contacts app.
+ * If this is not given or -1
+ * @hide
+ */
+ public static final String EXTRA_SELECTED_CONTACTS_APP_TAB_INDEX =
+ "SELECTED_TAB_INDEX";
+
+ /**
* Trigger a dialog that lists the various methods of interacting with
* the requested {@link Contacts} entry. This may be based on available
* {@link ContactsContract.Data} rows under that contact, and may also
@@ -5567,6 +5575,16 @@ public final class ContactsContract {
*/
public static void showQuickContact(Context context, View target, Uri lookupUri, int mode,
String[] excludeMimes) {
+ context.startActivity(getQuickContactIntent(context, target, lookupUri, mode,
+ excludeMimes));
+ }
+
+ /**
+ * Creates the Intent to launch Quick Contacts
+ * @hide
+ */
+ public static Intent getQuickContactIntent(Context context, View target, Uri lookupUri,
+ int mode, String[] excludeMimes) {
// Find location and bounds of target view, adjusting based on the
// assumed local density.
final float appScale = context.getResources().getCompatibilityInfo().applicationScale;
@@ -5580,7 +5598,7 @@ public final class ContactsContract {
rect.bottom = (int) ((pos[1] + target.getHeight()) * appScale + 0.5f);
// Trigger with obtained rectangle
- showQuickContact(context, rect, lookupUri, mode, excludeMimes);
+ return getQuickContactIntent(context, rect, lookupUri, mode, excludeMimes);
}
/**
@@ -5611,6 +5629,16 @@ public final class ContactsContract {
*/
public static void showQuickContact(Context context, Rect target, Uri lookupUri, int mode,
String[] excludeMimes) {
+ context.startActivity(getQuickContactIntent(context, target, lookupUri, mode,
+ excludeMimes));
+ }
+
+ /**
+ * Creates the Intent to launch Quick Contacts
+ * @hide
+ */
+ public static Intent getQuickContactIntent(Context context, Rect target, Uri lookupUri,
+ int mode, String[] excludeMimes) {
// Launch pivot dialog through intent for now
final Intent intent = new Intent(ACTION_QUICK_CONTACT);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP
@@ -5620,7 +5648,7 @@ public final class ContactsContract {
intent.setSourceBounds(target);
intent.putExtra(EXTRA_MODE, mode);
intent.putExtra(EXTRA_EXCLUDE_MIMES, excludeMimes);
- context.startActivity(intent);
+ return intent;
}
}
diff --git a/core/java/android/widget/QuickContactBadge.java b/core/java/android/widget/QuickContactBadge.java
index 4bbb54048801..e7d44a040715 100644
--- a/core/java/android/widget/QuickContactBadge.java
+++ b/core/java/android/widget/QuickContactBadge.java
@@ -48,6 +48,7 @@ public class QuickContactBadge extends ImageView implements OnClickListener {
private QueryHandler mQueryHandler;
private Drawable mBadgeBackground;
private Drawable mNoBadgeBackground;
+ private int mSelectedContactsAppTabIndex = -1;
protected String[] mExcludeMimes = null;
@@ -133,6 +134,15 @@ public class QuickContactBadge extends ImageView implements OnClickListener {
onContactUriChanged();
}
+ /**
+ * Sets the currently selected tab of the Contacts application. If not set, this is -1
+ * and therefore does not save a tab selection when a phone call is being made
+ * @hide
+ */
+ public void setSelectedContactsAppTabIndex(int value) {
+ mSelectedContactsAppTabIndex = value;
+ }
+
private void onContactUriChanged() {
if (mContactUri == null && mContactEmail == null && mContactPhone == null) {
if (mNoBadgeBackground == null) {
@@ -215,7 +225,13 @@ public class QuickContactBadge extends ImageView implements OnClickListener {
}
private void trigger(Uri lookupUri) {
- QuickContact.showQuickContact(getContext(), this, lookupUri, mMode, mExcludeMimes);
+ final Intent intent = QuickContact.getQuickContactIntent(getContext(), this, lookupUri,
+ mMode, mExcludeMimes);
+ if (mSelectedContactsAppTabIndex != -1) {
+ intent.putExtra(QuickContact.EXTRA_SELECTED_CONTACTS_APP_TAB_INDEX,
+ mSelectedContactsAppTabIndex);
+ }
+ getContext().startActivity(intent);
}
private class QueryHandler extends AsyncQueryHandler {
diff --git a/core/java/com/android/internal/widget/ContactHeaderWidget.java b/core/java/com/android/internal/widget/ContactHeaderWidget.java
index f421466292d6..43921134ad38 100644
--- a/core/java/com/android/internal/widget/ContactHeaderWidget.java
+++ b/core/java/com/android/internal/widget/ContactHeaderWidget.java
@@ -332,6 +332,13 @@ public class ContactHeaderWidget extends FrameLayout implements View.OnClickList
}
/**
+ * @hide
+ */
+ public void setSelectedContactsAppTabIndex(int value) {
+ mPhotoView.setSelectedContactsAppTabIndex(value);
+ }
+
+ /**
* Turn on/off showing of the aggregate badge element.
*/
public void showAggregateBadge(boolean showBagde) {