Add better support for importing from multiple SIMs

For I102f4f14ae976e550f65c83ee695d7cdc241e4e1

Test
See I102f4f14ae976e550f65c83ee695d7cdc241e4e1

Bug 31781331
Change-Id: I849e441d1ab42bff135b300b34595eb8ed468005
diff --git a/src/com/android/contacts/ContactSaveService.java b/src/com/android/contacts/ContactSaveService.java
index 1b2c22d..853e676 100755
--- a/src/com/android/contacts/ContactSaveService.java
+++ b/src/com/android/contacts/ContactSaveService.java
@@ -45,6 +45,8 @@
 import android.provider.ContactsContract.Profile;
 import android.provider.ContactsContract.RawContacts;
 import android.provider.ContactsContract.RawContactsEntity;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
 import android.support.v4.content.LocalBroadcastManager;
 import android.support.v4.os.ResultReceiver;
 import android.text.TextUtils;
@@ -150,6 +152,7 @@
 
     public static final String BROADCAST_GROUP_DELETED = "groupDeleted";
     public static final String BROADCAST_SIM_IMPORT_COMPLETE = "simImportComplete";
+    public static final String EXTRA_CALLBACK_DATA = "extraCallbackData";
 
     public static final String EXTRA_RESULT_CODE = "resultCode";
     public static final String EXTRA_RESULT_COUNT = "count";
@@ -208,7 +211,7 @@
     public void onCreate() {
         super.onCreate();
         mGroupsDao = new GroupsDaoImpl(this);
-        mSimContactDao = new SimContactDao(this);
+        mSimContactDao = SimContactDao.create(this);
     }
 
     public static void registerListener(Listener listener) {
@@ -1685,12 +1688,14 @@
         operations.add(builder.build());
     }
 
-    public static Intent createImportFromSimIntent(Context context,
-            ArrayList<SimContact> contacts, AccountWithDataSet targetAccount) {
+    public static Intent createImportFromSimIntent(@NonNull Context context,
+            @NonNull ArrayList<SimContact> contacts, @NonNull AccountWithDataSet targetAccount,
+            @Nullable  Bundle callbackData) {
         return new Intent(context, ContactSaveService.class)
                 .setAction(ACTION_IMPORT_FROM_SIM)
                 .putExtra(EXTRA_SIM_CONTACTS, contacts)
-                .putExtra(EXTRA_ACCOUNT, targetAccount);
+                .putExtra(EXTRA_ACCOUNT, targetAccount)
+                .putExtra(EXTRA_CALLBACK_DATA, callbackData);
     }
 
     private void importFromSim(Intent intent) {
@@ -1704,7 +1709,8 @@
             // notify success
             LocalBroadcastManager.getInstance(this).sendBroadcast(result
                     .putExtra(EXTRA_RESULT_COUNT, contacts.size())
-                    .putExtra(EXTRA_RESULT_CODE, RESULT_SUCCESS));
+                    .putExtra(EXTRA_RESULT_CODE, RESULT_SUCCESS)
+                    .putExtra(EXTRA_CALLBACK_DATA, intent.getBundleExtra(EXTRA_CALLBACK_DATA)));
             if (Log.isLoggable(TAG, Log.DEBUG)) {
                 Log.d(TAG, "importFromSim completed successfully");
             }