Merge "Allow "Saving to" and linked selectors to be displayed at the same time" into ub-contactsdialer-a-dev
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0c1a83f..3f721b3 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -275,6 +275,15 @@
     <!-- Toast displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
     <string name="contactSavedErrorToast">Couldn\'t save contact changes.</string>
 
+    <!-- Toast displayed when unlinking a contact failed. [CHAR LIMIT=NONE] -->
+    <string name="contactUnlinkErrorToast">Couldn\'t unlink contact.</string>
+
+    <!-- Toast displayed when joining a contact failed. [CHAR LIMIT=NONE] -->
+    <string name="contactJoinErrorToast">Couldn\'t join contact.</string>
+
+    <!-- Generic error default clause displayed when saving a contact failed. [CHAR LIMIT=NONE] -->
+    <string name="contactGenericErrorToast">Error saving contact.</string>
+
     <!-- Toast displayed when saving a contact photo failed. [CHAR LIMIT=NONE] -->
     <string name="contactPhotoSavedErrorToast">Couldn\'t save contact photo changes.</string>
 
diff --git a/src/com/android/contacts/editor/CompactContactEditorFragment.java b/src/com/android/contacts/editor/CompactContactEditorFragment.java
index 8067df1..9698ada 100644
--- a/src/com/android/contacts/editor/CompactContactEditorFragment.java
+++ b/src/com/android/contacts/editor/CompactContactEditorFragment.java
@@ -19,6 +19,7 @@
 import com.android.contacts.ContactSaveService;
 import com.android.contacts.R;
 import com.android.contacts.activities.CompactContactEditorActivity;
+import com.android.contacts.activities.ContactEditorBaseActivity;
 import com.android.contacts.common.model.RawContactDelta;
 import com.android.contacts.common.model.ValuesDelta;
 import com.android.contacts.common.model.account.AccountWithDataSet;
@@ -161,8 +162,27 @@
                 SAVE_MODE_EXTRA_KEY, saveMode, isEditingUserProfile(),
                 ((Activity) mContext).getClass(),
                 CompactContactEditorActivity.ACTION_SAVE_COMPLETED, mUpdatedPhotos);
-        mContext.startService(intent);
-
+        try {
+            mContext.startService(intent);
+        } catch (Exception exception) {
+            final int resId;
+            switch (saveMode) {
+                case ContactEditorBaseActivity.ContactEditor.SaveMode.SPLIT:
+                    resId = R.string.contactUnlinkErrorToast;
+                    break;
+                case ContactEditorBaseActivity.ContactEditor.SaveMode.RELOAD:
+                    resId = R.string.contactJoinErrorToast;
+                    break;
+                case ContactEditorBaseActivity.ContactEditor.SaveMode.CLOSE:
+                    resId = R.string.contactSavedErrorToast;
+                    break;
+                default:
+                    resId = R.string.contactGenericErrorToast;
+            }
+            Toast.makeText(mContext, resId, Toast.LENGTH_SHORT).show();
+            onCancelEditConfirmed();
+            return false;
+        }
         return true;
     }