Merge "Catch exception in starting ContactSaveService" into ub-contactsdialer-b-dev
diff --git a/src/com/android/contacts/activities/PeopleActivity.java b/src/com/android/contacts/activities/PeopleActivity.java
index f03f1eb..14849e1 100644
--- a/src/com/android/contacts/activities/PeopleActivity.java
+++ b/src/com/android/contacts/activities/PeopleActivity.java
@@ -35,6 +35,7 @@
 import android.provider.ContactsContract;
 import android.provider.ContactsContract.Contacts;
 import android.provider.ContactsContract.ProviderStatus;
+import android.provider.ContactsContract.QuickContact;
 import android.provider.Settings;
 import android.support.v13.app.FragmentPagerAdapter;
 import android.support.v4.view.PagerAdapter;
@@ -955,10 +956,17 @@
         }
 
         @Override
-        public void onViewContactAction(Uri contactLookupUri) {
-            final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(contactLookupUri,
-                    QuickContactActivity.MODE_FULLY_EXPANDED);
-            ImplicitIntentsUtil.startActivityInApp(PeopleActivity.this, intent);
+        public void onViewContactAction(Uri contactLookupUri, boolean isEnterpriseContact) {
+            if (isEnterpriseContact) {
+                // No implicit intent as user may have a different contacts app in work profile.
+                QuickContact.showQuickContact(PeopleActivity.this, new Rect(), contactLookupUri,
+                        QuickContactActivity.MODE_FULLY_EXPANDED, null);
+            } else {
+                final Intent intent = ImplicitIntentsUtil.composeQuickContactIntent(
+                        contactLookupUri,
+                        QuickContactActivity.MODE_FULLY_EXPANDED);
+                ImplicitIntentsUtil.startActivityInApp(PeopleActivity.this, intent);
+            }
         }
 
         @Override
diff --git a/src/com/android/contacts/list/ContactBrowseListFragment.java b/src/com/android/contacts/list/ContactBrowseListFragment.java
index 2381ea5..923208c 100644
--- a/src/com/android/contacts/list/ContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/ContactBrowseListFragment.java
@@ -600,9 +600,9 @@
         mListener = listener;
     }
 
-    public void viewContact(Uri contactUri) {
+    public void viewContact(Uri contactUri, boolean isEnterpriseContact) {
         setSelectedContactUri(contactUri, false, false, true, false);
-        if (mListener != null) mListener.onViewContactAction(contactUri);
+        if (mListener != null) mListener.onViewContactAction(contactUri, isEnterpriseContact);
     }
 
     public void deleteContact(Uri contactUri) {
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index fefe28b..9ea8a1d 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -92,7 +92,7 @@
         if (uri == null) {
             return;
         }
-        viewContact(uri);
+        viewContact(uri, getAdapter().isEnterpriseContact(position));
     }
 
     @Override
diff --git a/src/com/android/contacts/list/OnContactBrowserActionListener.java b/src/com/android/contacts/list/OnContactBrowserActionListener.java
index d91fee4..59fc611 100644
--- a/src/com/android/contacts/list/OnContactBrowserActionListener.java
+++ b/src/com/android/contacts/list/OnContactBrowserActionListener.java
@@ -33,7 +33,7 @@
      *
      * @param contactLookupUri The lookup-uri of the Contact that should be opened
      */
-    void onViewContactAction(Uri contactLookupUri);
+    void onViewContactAction(Uri contactLookupUri, boolean isEnterpriseContact);
 
     /**
      * Initiates the contact deletion process.