Don't allow importing contacts to accounts passed in by intent unless it is valid am: c8c222bc6c am: 8c7f6ee2ad am: 2134eeb074 am: 711cffaa4e am: 202cb05e81

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Contacts/+/24309801

Change-Id: I7dcd8852f7119e4865184640e7a85edf5e2e928f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/contacts/vcard/ImportVCardActivity.java b/src/com/android/contacts/vcard/ImportVCardActivity.java
index 38367c4..8e2f982 100644
--- a/src/com/android/contacts/vcard/ImportVCardActivity.java
+++ b/src/com/android/contacts/vcard/ImportVCardActivity.java
@@ -587,31 +587,39 @@
         String accountName = null;
         String accountType = null;
         String dataSet = null;
+        boolean isNullAccount = false;
         final Intent intent = getIntent();
-        if (intent != null) {
+        if (intent != null
+            && intent.hasExtra(SelectAccountActivity.ACCOUNT_NAME)
+            && intent.hasExtra(SelectAccountActivity.ACCOUNT_TYPE)
+            && intent.hasExtra(SelectAccountActivity.DATA_SET)) {
             accountName = intent.getStringExtra(SelectAccountActivity.ACCOUNT_NAME);
             accountType = intent.getStringExtra(SelectAccountActivity.ACCOUNT_TYPE);
             dataSet = intent.getStringExtra(SelectAccountActivity.DATA_SET);
+            isNullAccount = TextUtils.isEmpty(accountName) && TextUtils.isEmpty(accountType)
+                && TextUtils.isEmpty(dataSet);
         } else {
             Log.e(LOG_TAG, "intent does not exist");
         }
 
-        if (!TextUtils.isEmpty(accountName) && !TextUtils.isEmpty(accountType)) {
-            mAccount = new AccountWithDataSet(accountName, accountType, dataSet);
-        } else {
-            final AccountTypeManager accountTypes = AccountTypeManager.getInstance(this);
-            final List<AccountWithDataSet> accountList = accountTypes.blockForWritableAccounts();
-            if (accountList.size() == 0) {
-                mAccount = null;
-            } else if (accountList.size() == 1) {
-                mAccount = accountList.get(0);
-            } else {
-                startActivityForResult(new Intent(this, SelectAccountActivity.class),
-                        SELECT_ACCOUNT);
-                return;
+        final AccountTypeManager accountTypes = AccountTypeManager.getInstance(this);
+        final List<AccountWithDataSet> accountList = accountTypes.blockForWritableAccounts();
+        if ((!TextUtils.isEmpty(accountName) && !TextUtils.isEmpty(accountType)) || isNullAccount) {
+            AccountWithDataSet selected = new AccountWithDataSet(accountName, accountType,
+                dataSet);
+            if (accountList.contains(selected)) {
+                mAccount = selected;
             }
         }
 
+        if (accountList.isEmpty()) {
+            mAccount = null;
+        } else if (mAccount == null) {
+            startActivityForResult(new Intent(this, SelectAccountActivity.class),
+                SELECT_ACCOUNT);
+            return;
+        }
+
         if (isCallerSelf(this)) {
             startImport(sourceUri, sourceDisplayName);
         } else {